Python khớp hai danh sách

Trong khi lập trình bằng python, việc so sánh phải được thực hiện rất thường xuyên để kiểm tra các điều kiện khác nhau. Chúng ta có thể cần so sánh hai biến hoặc hai nhóm biến để kiểm tra một điều kiện. Trong bài viết này, chúng tôi sẽ thử các cách khác nhau để so sánh hai danh sách trong python. Trong khi so sánh, chúng ta sẽ phải kiểm tra xem cả hai danh sách có chứa các phần tử giống nhau hay không bất kể thứ tự các phần tử có trong danh sách. Theo đó, chúng ta sẽ phải in kết quả

So sánh hai danh sách bằng phương thức sort[]

Để kiểm tra xem hai danh sách có chứa các phần tử giống nhau hay không, chúng ta có thể sử dụng phương thức sort[] để sắp xếp các phần tử của danh sách trước. Sau đó, chúng ta có thể so sánh hai danh sách

Để so sánh, đầu tiên chúng ta sẽ kiểm tra xem độ dài của các danh sách có bằng nhau hay không. Nếu độ dài không bằng nhau, các danh sách sẽ tự động được coi là khác nhau.  

Nếu độ dài của các danh sách bằng nhau, chúng tôi sẽ sắp xếp hai danh sách. Sau đó, chúng ta sẽ so sánh các danh sách bằng toán tử == để kiểm tra xem các danh sách có bằng nhau hay không. Nếu các danh sách được sắp xếp bằng nhau, nó sẽ xác định rằng cả hai danh sách ban đầu đều chứa các phần tử giống nhau. Điều này có thể được thực hiện như sau

# function to compare lists
def compare[l1, l2]:
    # here l1 and l2 must be lists
    if len[l1] != len[l2]:
        return False
    l1.sort[]
    l2.sort[]
    if l1 == l2:
        return True
    else:
        return False


list1 = [1, 2, 3, 4]
list2 = [1, 4, 3, 2]
list3 = [2, 3, 4, 5]
print["list1 is:",list1]
print["list2 is:",list2]
print["list3 is:",list3]

# comparing list1 and list 2
print["list1 and list2 contain same elements:",compare[list1, list2]]
#comparing list2 and list3
print["list1 and list3 contain same elements:",compare[list1, list3]]

đầu ra

list1 is: [1, 2, 3, 4]
list2 is: [1, 4, 3, 2]
list3 is: [2, 3, 4, 5]
list1 and list2 contain same elements: True
list1 and list3 contain same elements: False

So sánh bằng cách sử dụng các bộ trong Python

Để so sánh hai danh sách trong python, chúng ta có thể sử dụng bộ. Một bộ trong python chỉ cho phép các giá trị duy nhất trong đó. Chúng ta có thể sử dụng thuộc tính này của tập hợp để tìm xem hai danh sách có cùng phần tử hay không

Để so sánh, đầu tiên chúng ta sẽ kiểm tra xem độ dài của các danh sách có bằng nhau hay không. Nếu độ dài không bằng nhau, các danh sách sẽ tự động được gắn cờ là khác nhau

Sau đó, chúng ta sẽ chuyển đổi các danh sách thành các bộ bằng hàm tạo set[]. Chúng ta có thể so sánh hai tập hợp bằng toán tử == để kiểm tra xem cả hai tập hợp có bằng nhau hay không. Nếu cả hai bộ bằng nhau, thì sẽ xác định rằng cả hai danh sách đều chứa các giá trị bằng nhau. Ví dụ sau minh họa khái niệm này

# function to compare lists
def compare[l1, l2]:
    # here l1 and l2 must be lists
    if len[l1] != len[l2]:
        return False
    set1 = set[l1]
    set2 = set[l2]
    if set1 == set2:
        return True
    else:
        return False


list1 = [1, 2, 3, 4]
list2 = [1, 4, 3, 2]
list3 = [2, 3, 4, 5]
print["list1 is:", list1]
print["list2 is:", list2]
print["list3 is:", list3]

# comparing list1 and list 2
print["list1 and list2 contain same elements:", compare[list1, list2]]
# comparing list2 and list3
print["list1 and list3 contain same elements:", compare[list1, list3]]

đầu ra

list1 is: [1, 2, 3, 4]
list2 is: [1, 4, 3, 2]
list3 is: [2, 3, 4, 5]
list1 and list2 contain same elements: True
list1 and list3 contain same elements: False

So sánh hai danh sách bằng bộ đếm tần số

Chúng ta cũng có thể so sánh hai danh sách mà không cần so sánh độ dài của chúng. Đối với điều này, trước tiên chúng ta sẽ phải tạo một từ điển python cho từng danh sách để theo dõi tần suất của các phần tử trong danh sách. Sau khi tạo các từ điển trong đó các phần tử của danh sách được lưu dưới dạng khóa và tần suất của chúng được lưu dưới dạng giá trị, chúng ta có thể so sánh tần suất của từng phần tử trong hai từ điển. Nếu tần số của mỗi phần tử trở nên bằng nhau, điều đó sẽ được xác nhận rằng cả hai danh sách đều chứa các phần tử bằng nhau

Đối với tác vụ này, chúng ta có thể sử dụng phương thức counter[]. Phương thức counter[], khi được gọi trong danh sách, sẽ tạo một từ điển python và lưu trữ các phần tử dưới dạng khóa và tần số của chúng dưới dạng giá trị trong đó. Sau khi gọi phương thức counter[], chúng ta có thể so sánh từ điển đã tạo bằng toán tử == để kiểm tra xem tần suất của mọi phần tử có bằng nhau hay không. Nếu kết quả là True, các danh sách chứa các phần tử bằng nhau. Nếu không thì không. Điều này có thể được nhìn thấy từ ví dụ sau

import collections
# function to compare lists
def compare[l1, l2]:
    # here l1 and l2 must be lists
    if len[l1] != len[l2]:
        return False
    counter1 = collections.Counter[l1]
    counter2=collections.Counter[l2]
    if counter1 == counter2:
        return True
    else:
        return False


list1 = [1, 2, 3, 4]
list2 = [1, 4, 3, 2]
list3 = [2, 3, 4, 5]
print["list1 is:", list1]
print["list2 is:", list2]
print["list3 is:", list3]

# comparing list1 and list 2
print["list1 and list2 contain same elements:", compare[list1, list2]]
# comparing list2 and list3
print["list1 and list3 contain same elements:", compare[list1, list3]]

đầu ra

list1 is: [1, 2, 3, 4]
list2 is: [1, 4, 3, 2]
list3 is: [2, 3, 4, 5]
list1 and list2 contain same elements: True
list1 and list3 contain same elements: False

Phần kết luận

Trong bài viết này, chúng ta đã thấy ba cách khác nhau để so sánh hai danh sách trong python và đã kiểm tra xem chúng có chứa các phần tử giống nhau hay không mà không xem xét vị trí của các phần tử. Để đọc thêm về danh sách, hãy đọc bài viết này về hiểu danh sách

Trong hàm so sánh [] được sử dụng trong các ví dụ, có thể người dùng chuyển hai đối tượng khác thay vì danh sách. Trong những trường hợp như vậy, chương trình có thể gặp lỗi. Để tránh điều này, chúng ta có thể sử dụng xử lý ngoại lệ bằng cách sử dụng python try except để tránh lỗi thời gian chạy bằng cách áp dụng kiểm tra kiểu bằng phương thức type[] trong khối try-ngoại trừ để kiểm tra xem các đối tượng được truyền dưới dạng đối số có phải là danh sách không

Có liên quan

Đào tạo Python được đề xuất

Khóa học. Python 3 cho người mới bắt đầu

Hơn 15 giờ nội dung video với hướng dẫn có hướng dẫn cho người mới bắt đầu. Tìm hiểu cách tạo các ứng dụng trong thế giới thực và nắm vững kiến ​​thức cơ bản

Chủ Đề