Làm cách nào để so sánh hai danh sách trong Python và trả về Đúng hoặc Sai?

Giả sử chúng tôi có hai danh sách và chúng tôi muốn kiểm tra xem cả hai danh sách có bằng nhau hay không. Có thể có hai ý nghĩa của 2 bình đẳng ở đây,

  1. Cả hai danh sách phải chứa các phần tử duy nhất giống nhau và có cùng tần suất, nhưng các phần tử có thể được đặt theo bất kỳ thứ tự nào
  2. Cả hai danh sách phải chính xác bằng i. e. thứ tự các phần tử phải giống nhau

Hãy thảo luận từng kịch bản một,

Kiểm tra xem hai danh sách có bằng nhau không phân biệt thứ tự các phần tử

Giả sử chúng ta có hai danh sách,

quảng cáo

first_list = [10, 10, 11, 12, 12, 13, 14, 16, 15, 16, 12]
sec_list = [16, 12, 13, 14, 15, 16, 10, 11, 12, 10, 12]

Cả hai danh sách đều chứa các phần tử tương tự có cùng tần số, nhưng thứ tự của các phần tử trong đó khác nhau. Có nhiều cách khác nhau để kiểm tra xem các loại danh sách này có bằng nhau hay không,

Sắp xếp và so sánh để kiểm tra xem hai danh sách có bằng nhau không

Chúng tôi có thể tạo các phiên bản được sắp xếp của cả hai danh sách. Nếu danh sách ban đầu chứa các phần tử giống nhau nhưng theo thứ tự khác nhau, thì thứ tự của các phần tử phải giống nhau trong các phiên bản được sắp xếp của danh sách. Vì vậy, bằng cách so sánh các phiên bản sắp xếp của danh sách, chúng ta có thể tìm hiểu xem các danh sách có bằng nhau hay không. Ví dụ,

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
first_list = [10, 10, 11, 12, 12, 13, 14, 16, 15, 16, 12]
sec_list = [16, 12, 13, 14, 15, 16, 10, 11, 12, 10, 12]

if check_if_equal[first_list, sec_list]:
    print['Lists are equal i.e. contain similar elements with same frequency']
else:
    print['Lists are not equal']

đầu ra

Lists are equal i.e. contain similar elements with same frequency

Đầu tiên nó kiểm tra xem cả hai danh sách có cùng kích thước hay không. Nếu cả hai đều có kích thước khác nhau thì điều đó có nghĩa là các danh sách không bằng nhau. Trong khi đó, nếu cả hai danh sách có cùng kích thước, thì hãy tạo một phiên bản được sắp xếp của cả hai danh sách và so sánh chúng bằng toán tử == để kiểm tra xem các danh sách có bằng nhau hay không

Vì vậy, đây là cách chúng ta có thể so sánh hai danh sách bất kể thứ tự của các phần tử trong danh sách

Sử dụng bộ sưu tập. Counter[] để kiểm tra xem hai danh sách có bằng nhau không

mô-đun bộ sưu tập cung cấp một lớp Counter. Chúng ta có thể tạo đối tượng của nó bằng cách chuyển một danh sách tới hàm tạo của nó,

collections.Counter[list]

Nó trả về một đối tượng Counter, là một lớp con dict và nó chứa tần suất đếm của từng phần tử duy nhất trong danh sách. Vì vậy, để kiểm tra xem hai danh sách có bằng nhau hay không, chúng ta có thể tạo các đối tượng Bộ đếm từ cả hai danh sách rồi so sánh chúng để kiểm tra xem cả hai danh sách có chứa các phần tử duy nhất giống nhau với cùng tần suất hay không

Ví dụ,

import collections

def check_if_equal_2[list_1, list_2]:
    """ Check if both the lists are of same length and then get the frequency
    of each element in list using collections.Counter. Then Compare if both the Counter
    objects are equal or not to confirm if lists contain similar elements with same frequency"""
    if len[list_1] != len[list_2]:
        return False
    return collections.Counter[list_1] == collections.Counter[list_2]


first_list = [10, 10, 11, 12, 12, 13, 14, 16, 15, 16, 12]
sec_list = [16, 12, 13, 14, 15, 16, 10, 11, 12, 10, 12]

if check_if_equal_2[first_list, sec_list]:
    print['Lists are equal i.e. contain similar elements with same frequency']
else:
    print['Lists are not equal']

đầu ra

Lists are equal i.e. contain similar elements with same frequency

sử dụng np. array_equal[] để kiểm tra xem hai danh sách có bằng nhau không

Chúng tôi có thể tạo hai mảng numpy được sắp xếp từ danh sách của mình và sau đó chúng tôi có thể so sánh chúng bằng cách sử dụng numpy. array_equal[] để kiểm tra xem cả hai có chứa các phần tử giống nhau không. Ví dụ,

import numpy as np

first_list = [10, 10, 11, 12, 12, 13, 14, 16, 15, 16, 12]
sec_list = [16, 12, 13, 14, 15, 16, 10, 11, 12, 10, 12]

# Convert both lists to sorted numpy arrays, then compare
# them to check if both are equal or not
result = np.array_equal[np.array[first_list].sort[], np.array[sec_list].sort[]]

if result:
    print['Lists are equal i.e. contain similar elements with same frequency']
else:
    print['Lists are not equal']

đầu ra

Lists are equal i.e. contain similar elements with same frequency

Cách tiếp cận này có thể hữu ích nếu chúng ta muốn so sánh một danh sách với một mảng có nhiều mảng hoặc nhiều chiều

Kiểm tra xem hai danh sách có chính xác bằng nhau không. Thứ tự các phần tử phải giống nhau

Giả sử chúng ta có hai danh sách,

first_list = [10, 11, 12, 13, 14, 15, 16]
sec_list = [10, 11, 12, 13, 14, 15, 16]

Bây giờ chúng tôi muốn kiểm tra xem cả hai danh sách có chính xác bằng nhau hay không. e. nếu cả hai danh sách đều chứa các phần tử giống nhau và theo cùng một thứ tự. Để làm được điều đó, chúng ta cần so sánh cả phần tử danh sách theo phần tử. Có nhiều cách khác nhau để làm điều đó và hãy thảo luận từng cách một,

Sử dụng toán tử == để kiểm tra xem hai danh sách có chính xác bằng nhau không

Chúng ta có thể so sánh trực tiếp hai danh sách bằng toán tử ==. Nếu cả hai danh sách đều chính xác bằng nhau, nó sẽ trả về True khác False,

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
0

đầu ra

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
1

Đây là cách dễ nhất và nhanh nhất để kiểm tra xem cả hai danh sách có chính xác bằng nhau không. Nhưng thật tốt khi biết một số tùy chọn khác

Sử dụng các hàm map[] và all[] để kiểm tra xem hai danh sách có chính xác bằng nhau không

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
2

đầu ra

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
1

Làm thế nào nó hoạt động?

hàm map[] áp dụng hàm lambda đã cho cho từng phần tử của cả hai danh sách và lưu kết quả vào một mảng mới. Trong trường hợp của chúng ta sẽ là một mảng bool vì bên trong hàm lambda, chúng ta đang kiểm tra xem cả hai phần tử có bằng nhau hay không

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
4

đầu ra

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
5

Hàm map[] trả về một mảng bool mới, trong đó mỗi mục thứ i trong mảng bool này biểu thị xem first_list[i] có bằng sec_list[i] hay không. Nếu tất cả các phần tử trong mảng bool này là True thì có nghĩa là cả hai danh sách đều bằng nhau. Chúng ta có thể làm điều này bằng hàm all[],

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
6

đầu ra

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
7

Hàm all[] chấp nhận một chuỗi làm đối số và trả về True nếu tất cả các phần tử trong chuỗi này là True. Vì vậy, đây là cách chúng tôi có thể kiểm tra xem hai danh sách có chính xác bằng nhau không

Sử dụng hàm reduce[] và map[] để kiểm tra xem hai danh sách có bằng nhau không

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
8

đầu ra

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
1

Làm thế nào nó hoạt động?
Hàm map[] áp dụng hàm lambda đã cho cho từng phần tử của cả hai danh sách và lưu kết quả vào một mảng mới. Trong trường hợp của chúng ta sẽ là một mảng bool vì bên trong hàm lambda, chúng ta đang kiểm tra xem cả hai phần tử có bằng nhau hay không

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
4

đầu ra

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
5

Hàm map[] trả về một mảng bool mới, trong đó mỗi mục thứ i trong mảng bool này biểu thị xem first_list[i] có bằng sec_list[i] hay không. Nếu tất cả các phần tử trong mảng bool này là True thì có nghĩa là cả hai danh sách đều bằng nhau. Chúng ta có thể làm điều này bằng hàm reduce[],

Hàm reduce[fun,seq] chấp nhận một hàm và một chuỗi làm đối số. Nó trả về một giá trị duy nhất theo logic này,

  1. Đầu tiên, nó sẽ áp dụng hàm trên hai giá trị đầu tiên của chuỗi và lưu kết quả dưới dạng latest_result
  2. Sau đó, nó sẽ gọi lại hàm và chuyển latest_result cùng với mục tiếp theo trong chuỗi và lưu kết quả dưới dạng latest_result
  3. Nó sẽ lặp lại bước 2 cho đến khi tất cả các phần tử của chuỗi được tiêu thụ

Chúng ta có thể sử dụng hàm reduce[] để kiểm tra xem một danh sách bool có chứa tất cả các phần tử True hay không,

first_list = [10, 10, 11, 12, 12, 13, 14, 16, 15, 16, 12]
sec_list = [16, 12, 13, 14, 15, 16, 10, 11, 12, 10, 12]

if check_if_equal[first_list, sec_list]:
    print['Lists are equal i.e. contain similar elements with same frequency']
else:
    print['Lists are not equal']
2

đầu ra

def check_if_equal[list_1, list_2]:
    """ Check if both the lists are of same length and if yes then compare
    sorted versions of both the list to check if both of them are equal
    i.e. contain similar elements with same frequency. """
    if len[list_1] != len[list_2]:
        return False
    return sorted[list_1] == sorted[list_2]
7

Vì vậy, đây là cách chúng tôi có thể kiểm tra xem hai danh sách có chính xác bằng nhau không

Lặp lại song song hai danh sách để kiểm tra xem hai danh sách có chính xác bằng nhau không

Chúng ta có thể lặp song song cả hai danh sách bằng cách sử dụng vòng lặp for. Để làm được điều đó, chúng tôi sẽ nén cả hai đối tượng danh sách để tạo danh sách các bộ dữ liệu. Trong đó bộ thứ i trong danh sách các bộ này chứa phần tử thứ i của cả hai danh sách i. e. [danh sách_1[i], danh sách_2[i]]. Sau đó, chúng ta có thể lặp lại danh sách các bộ dữ liệu này để kiểm tra xem cả hai phần tử trong mỗi bộ dữ liệu có bằng nhau hay không. Nếu mỗi bộ chứa các phần tử bằng nhau trong danh sách các bộ này thì điều đó có nghĩa là cả hai danh sách đều bằng nhau

Làm cách nào tôi có thể so sánh hai danh sách trong Python và trả về kết quả khớp?

Bạn có thể sử dụng hàm set[] để tạo các đối tượng tập hợp bằng cách sử dụng các danh sách đã cho, sau đó so sánh các tập hợp cho bằng nhau bằng cách sử dụng toán tử ==. The order of the original list items is not important, because the == operator returns true when each set contains identical items in any order.

Làm cách nào để so sánh 2 danh sách trong Python?

Làm cách nào để so sánh hai danh sách trong Python? .
Sử dụng danh sách. toán tử sort[] và ==. Danh sách. .
Sử dụng bộ sưu tập. Counter[] Phương thức này kiểm tra sự bằng nhau của các danh sách bằng cách so sánh tần suất của từng phần tử trong danh sách đầu tiên với danh sách thứ hai. .
Sử dụng toán tử ==. Đây là một sửa đổi của phương pháp đầu tiên

Làm cách nào để so sánh hai danh sách chuỗi trong Python và trả về kết quả không khớp?

So sánh các chuỗi bằng cách sử dụng == và. = . == và. = là các toán tử boolean, nghĩa là chúng trả về Đúng hoặc Sai. Ví dụ: == trả về True nếu hai chuỗi khớp nhau và Sai nếu không.

Chủ Đề