Computer >> Máy Tính >  >> Lập trình >> Python

Làm thế nào để so sánh hai danh sách trong Python?

Danh sách trong python là một tập hợp các mục tương tự. Đôi khi chúng tôi có thể cần so sánh các mục dữ liệu trong hai danh sách để thực hiện các thao tác nhất định. Chúng ta sẽ thảo luận về các phương pháp nhất định để so sánh hai danh sách trong python.

Sử dụng toán tử list.sort () và ==

Phương thức list.sort () sắp xếp hai danh sách và toán tử ==so sánh hai danh sách theo từng mục có nghĩa là chúng có các mục dữ liệu bằng nhau ở các vị trí bằng nhau. Điều này kiểm tra xem danh sách có chứa các giá trị mục dữ liệu bằng nhau hay không nhưng nó không tính đến thứ tự của các phần tử trong danh sách. Điều này có nghĩa là danh sách [1,2,3] sẽ bằng danh sách [2,1,3] theo phương pháp so sánh này.

Ví dụ

def compareList(l1,l2):
   l1.sort()
   l2.sort()
   if(l1==l2):
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print("First comparison",compareList(l1,l2))
l3=[1,2,3]
l4=[1,2,4]
print("Second comparison",compareList(l3,l4))

Đầu ra

First comparison Equal
Second comparison Non equal

Sử dụng bộ sưu tập.Counter ()

Phương pháp này kiểm tra sự bình đẳng 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. Phương pháp này cũng không tính đến thứ tự của các phần tử trong danh sách.

Ví dụ

import collections
def compareList(l1,l2):
   if(collections.Counter(l1)==collections.Counter(l2)):
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print("First comparison",compareList(l1,l2))
l3=[1,2,3]
l4=[1,2,4]
print("Second comparison",compareList(l3,l4))

Đầu ra

First comparison Non equal
Second comparison Equal

Sử dụng sum (), zip () và len ()

Đầu tiên, phương pháp này so sánh từng phần tử của hai danh sách và lưu trữ chúng dưới dạng tổng của 1, sau đó được so sánh với độ dài của danh sách kia. Đối với phương pháp này, trước tiên chúng ta phải kiểm tra xem độ dài của cả hai danh sách có bằng nhau hay không trước khi thực hiện phép tính này.

Phương pháp này cũng kiểm tra thứ tự của các phần tử. Điều này có nghĩa là danh sách [1,2,3] không bằng danh sách [2,1,3].

Ví dụ

def compareList(l1,l2):
   if(len(l1)==len(l2) and len(l1)==sum([1 for i,j in zip(l1,l2) if i==j])):
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print("First comparison",compareList(l1,l2))
l3=[1,2,3]
l4=[1,2,3]
print("Second comparison",compareList(l3,l4))

Đầu ra

First comparison Non equal
Second comparison Equal

Như trong ví dụ trên, đối với phép so sánh đầu tiên, các mục dữ liệu trong cả hai danh sách đều bằng nhau nhưng thứ tự của các phần tử khác nhau. Do đó, so sánh đầu tiên trả về không bằng nhau.

Sử dụng toán tử ==

Đây là một sửa đổi của phương pháp đầu tiên. Trong phương pháp này, các danh sách được so sánh mà không cần sắp xếp và do đó, phương pháp này tính đến thứ tự của các mục dữ liệu trong danh sách.

Ví dụ

def compareList(l1,l2):
   if(l1==l2):
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print("First comparison",compareList(l1,l2))
l3=[1,2,3]
l4=[1,2,3]
print("Second comparison",compareList(l3,l4))

Đầu ra

First comparison Non equal
Second comparison Equal

Đây là một số phương pháp để so sánh danh sách trong python, cả hai đều tính đến thứ tự của các mục dữ liệu cũng như không tính đến thứ tự của các mục dữ liệu.