Chúng ta sẽ tìm hiểu tất cả các trường hợp so sánh danh sách có thể xảy ra trong Python. Chúng tôi cũng sẽ tìm hiểu các phương pháp khác nhau cho cùng một mục đích
Mục lục
So sánh nếu 2 danh sách bằng nhau với cùng một thứ tự
Để so sánh một cái gì đó trong Python, chúng tôi sử dụng toán tử
# Method 2: For loop
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
for i in range[len[list1]]:
if list1[i] != list2[i]:
print[False]
break
else:
print[True]
2 hoặc toán tử # Method 2: For loop
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
for i in range[len[list1]]:
if list1[i] != list2[i]:
print[False]
break
else:
print[True]
3- == [bằng] - Nó so sánh 2 giá trị và trả về
4 nếu cả hai giá trị bằng nhau.# Method 2: For loop list1 = [1, 2, 3, 4, 5] list2 = [1, 2, 3, 4, 5] for i in range[len[list1]]: if list1[i] != list2[i]: print[False] break else: print[True]
- is [giống hệt với] - Nó so sánh 2 biến và trả về
4 nếu cả hai biến đều trỏ đến cùng một đối tượng. Điều này có nghĩa là địa chỉ bộ nhớ của cả hai biến đều giống nhau.# Method 2: For loop list1 = [1, 2, 3, 4, 5] list2 = [1, 2, 3, 4, 5] for i in range[len[list1]]: if list1[i] != list2[i]: print[False] break else: print[True]
Chúng ta sẽ sử dụng == vì khi sử dụng is we are comparing the memory address of 2 variables which will be different in the case of 2 different lists.
So sánh 2 danh sách cho cùng một thứ tự các mặt hàng
Phương pháp 1. == Toán tử
Chúng ta có thể sử dụng toán tử == để so sánh 2 danh sách. Nếu cả hai danh sách có cùng một phần tử theo cùng một thứ tự thì nó sẽ trả về
# Method 2: For loop
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
for i in range[len[list1]]:
if list1[i] != list2[i]:
print[False]
break
else:
print[True]
4. # python compare two lists
# Method 1: == Operator
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
print[list1 == list2] # True
đầu ra
True
Phương pháp 2. Sử dụng vòng lặp
Chúng ta cũng có thể sử dụng vòng lặp for để so sánh 2 danh sách
Vì chúng ta chỉ phải kiểm tra xem phần tử ở vị trí bất kỳ trong list1 có bằng phần tử ở cùng vị trí trong list2 hay không, nên . Chúng ta có thể so sánh nó trong một lần lặp lại.
# Method 2: For loop
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
for i in range[len[list1]]:
if list1[i] != list2[i]:
print[False]
break
else:
print[True]
đầu ra
True
So sánh nếu 2 danh sách bằng nhau bất kể thứ tự
Khi bạn so sánh 2 danh sách bất kể thứ tự của các thành phần trong danh sách, nó sẽ trở thành một nhiệm vụ phức tạp. Bây giờ bạn không thể đánh đồng 2 danh sách và kiểm tra xem chúng có bằng nhau không
Để so sánh các danh sách bây giờ bạn có 2 cách tiếp cận
- Sắp xếp cả hai danh sách và sau đó so sánh chúng
- So sánh từng phần tử của list1 với từng phần tử của list2 and check if they exist in both lists.
So sánh 2 danh sách cho một thứ tự khác nhau của các mặt hàng
Phương pháp 1. Sắp xếp cả hai danh sách
Sắp xếp cả hai danh sách. Điều này sẽ làm cho danh sách theo cùng một thứ tự nếu chúng có cùng các phần tử
Bây giờ, chỉ cần so sánh cả hai danh sách bằng cách sử dụng toán tử == .
# Method 1
list1 = [4, 1, 5, 2, 3]
list2 = [3, 5, 2, 1, 4]
# Sort both the lists
list1.sort[]
list2.sort[]
# Compare both the lists
print[list1 == list2]
đầu ra
True
Phương pháp 2. So sánh phần tử riêng lẻ
Một cách tiếp cận khác là so sánh từng phần tử của list1 với từng phần tử của list2 and check if they exist in both lists.
Trước khi so sánh các phần tử, trước tiên hãy kiểm tra xem cả hai danh sách có cùng độ dài không. Nếu chúng không có cùng độ dài thì đơn giản là chúng không bằng nhau
Chúng ta sẽ tạo một hàm ở đây sẽ lấy 2 danh sách làm đối số và thực hiện so sánh
# Method 2: For loop
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
for i in range[len[list1]]:
if list1[i] != list2[i]:
print[False]
break
else:
print[True]
1đầu ra
True
Nhận giao điểm của 2 danh sách
Tìm giao điểm của 2 danh sách tức là tìm tất cả các phần tử có mặt trong cả 2 danh sách
Có nhiều cách để tìm giao điểm của 2 danh sách. Cách phổ biến nhất để có các giao điểm là sử dụng cấu trúc dữ liệu set .
Phương pháp 1. Tìm giao lộ bằng cách sử dụng tập hợp
A set bao gồm các phần tử duy nhất. Vì vậy, nếu lấy một tập hợp danh sách thì nó sẽ trả về các phần tử duy nhất của danh sách.
Để tìm giao điểm của các danh sách, bạn có thể lấy một tập hợp cả hai danh sách và sử dụng toán tử & để tìm giao điểm.
# Method 2: For loop
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
for i in range[len[list1]]:
if list1[i] != list2[i]:
print[False]
break
else:
print[True]
3đầu ra
# Method 2: For loop
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
for i in range[len[list1]]:
if list1[i] != list2[i]:
print[False]
break
else:
print[True]
4Cả
# Method 2: For loop
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
for i in range[len[list1]]:
if list1[i] != list2[i]:
print[False]
break
else:
print[True]
7 hoặc # Method 2: For loop
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
for i in range[len[list1]]:
if list1[i] != list2[i]:
print[False]
break
else:
print[True]
8 sẽ trả về cùng một kết quảBạn cũng có thể sử dụng phương thức intersection[] của set class to find intersections.
True0
đầu ra
# Method 2: For loop
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
for i in range[len[list1]]:
if list1[i] != list2[i]:
print[False]
break
else:
print[True]
4Phương pháp 2. Tìm giao lộ bằng cách sử dụng hiểu danh sách
Một cách khác để tìm giao điểm của 2 danh sách là sử dụng khả năng hiểu danh sách
Khi hiểu danh sách, chúng ta sẽ sử dụng điều kiện if để kiểm tra xem một phần tử có tồn tại trong cả hai danh sách hay không.
True2
đầu ra
True3
Ngoài ra, bạn có thể sử dụng vòng lặp for để tìm giao lộ.
Vòng lặp cũng sẽ tuân theo logic tương tự như hiểu danh sách
True4
đầu ra
True3
Lấy sự khác biệt của 2 danh sách
Tìm sự khác biệt của các phần tử từ danh sách thứ nhất đến danh sách thứ hai nghĩa là tìm tất cả các phần tử có trong danh sách thứ nhất nhưng không có trong danh sách thứ hai
Để biết sự khác biệt giữa 2 danh sách, bạn có thể sử dụng cấu trúc dữ liệu set và sử dụng - . operator to find the difference.
True6
đầu ra
True7
Sự khác biệt giữa list1 với list2 và list2 to list1 will be different.
Bạn cũng có thể sử dụng phương thức difference[] của set class to find differences.
True8
đầu ra
True7
So sánh xem 2 danh sách có bằng nhau không
Giả sử danh sách của bạn chứa các giá trị chuỗi và bạn muốn so sánh xem 2 danh sách có bằng nhau không, bỏ qua chữ hoa chữ thường
Để làm điều này, bạn có thể sử dụng lớp str để chuyển đổi tất cả các giá trị chuỗi thành chữ thường và sau đó sử dụng == operator to compare [If elements are not in the same order then you can use the methods discussed above].
# Method 2: For loop
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
for i in range[len[list1]]:
if list1[i] != list2[i]:
print[False]
break
else:
print[True]
0đầu ra
True
Phần kết luận
Trong bài viết này, chúng ta đã thảo luận về nhiều cách Python so sánh hai danh sách. Ta đã từng gặp các trường hợp như so sánh 2 danh sách, tìm giao điểm, tìm điểm khác biệt và so sánh 2 danh sách bỏ qua trường hợp