List trong Python là tập hợp các phần tử. Đôi khi cần so sánh dữ liệu giữa hai list để thực hiện các thao tác nhất định. Bài viết giới thiệu các phương pháp so sánh hai list.
Sử dụng list.sort() và toán tử ==
Phương thức list.sort() sắp xếp hai list, sau đó toán tử == so sánh từng phần tử theo vị trí. Cách này kiểm tra xem hai list có chứa cùng các giá trị hay không, không quan tâm thứ tự. Nghĩa là [1,2,3] bằng [2,1,3] theo phương pháp 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("So sánh đầu tiên",compareList(l1,l2))
l3=[1,2,3]
l4=[1,2,4]
print("So sánh thứ hai",compareList(l3,l4))Kết quả
So sánh đầu tiên Equal So sánh thứ hai Non equal
Sử dụng collections.Counter()
Phương pháp này so sánh tần suất xuất hiện của mỗi phần tử trong hai list. Cũng không quan tâm thứ tự phần tử.
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("So sánh đầu tiên",compareList(l1,l2))
l3=[1,2,3]
l4=[1,2,4]
print("So sánh thứ hai",compareList(l3,l4))Kết quả
So sánh đầu tiên Non equal So sánh thứ hai Equal
Sử dụng sum(), zip() và len()
Phương pháp này so sánh từng phần tử tương ứng của hai list, đếm số cặp bằng nhau, sau đó so sánh với độ dài list. Cách này kiểm tra cả thứ tự phần tử. Nghĩa là [1,2,3] khác [2,1,3].
Trước tiên phải kiểm tra độ dài hai list có bằng nhau.
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("So sánh đầu tiên",compareList(l1,l2))
l3=[1,2,3]
l4=[1,2,3]
print("So sánh thứ hai",compareList(l3,l4))Kết quả
So sánh đầu tiên Non equal So sánh thứ hai Equal
Ở so sánh đầu tiên, dữ liệu giống nhau nhưng thứ tự khác, nên trả về "Non equal".
Sử dụng toán tử == (không sắp xếp)
Là biến thể của phương pháp đầu: so sánh trực tiếp không sắp xếp, do đó kiểm tra cả thứ tự phần tử.
Ví dụ
def compareList(l1,l2):
if(l1==l2):
return "Equal"
else:
return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print("So sánh đầu tiên",compareList(l1,l2))
l3=[1,2,3]
l4=[1,2,3]
print("So sánh thứ hai",compareList(l3,l4))Kết quả
So sánh đầu tiên Non equal So sánh thứ hai Equal
Trên đây là các phương pháp so sánh list trong Python, cả có xét thứ tự và không xét thứ tự.