Cách so sánh kiểu dữ liệu LIST trong Python

so sánh danh sách trong python

Python cung cấp nhiều cách để so sánh hai dữ liệu dạng danh sách ( List ) . So sánh là quá trình kiểm tra các mục dữ liệu của một mục dữ liệu khác trong danh sách, xem chúng có giống nhau hay không.

# Ví dụ về kiểu dữ liệu dạng List
list1 - [11, 12, 13, 14, 15]  
list2 - [11, 12, 13, 14, 15]  
# Dữ liệu ra - Các dữ liệu giống nhau

Chúng ta có thể sử dụng các phương pháp so sánh dưới đây.

  • Hàm cmp()
  • Hàm set() và toán tử ==
  • Hàm sort() và toán tử ==
  • Hàm collection.counter()
  • Hàm reduce() và map()

Hàm CMP trong Python

Hàm cmp() của Python so sánh hai đối tượng Python và trả về các giá trị nguyên -1, 0, 1 tùy theo sự so sánh.

Với hàm này không thể sử dụng được trong Python 3.x

Hàm set() và toán tử ==

Hàm set() của Python thao tác danh sách vào tập hợp mà không cần quan tâm đến thứ tự của các phần tử. Ngoài ra, chúng ta sử dụng toán tử bằng (==) để so sánh các phần tử dữ liệu của danh sách. Hãy hiểu ví dụ sau đây.

# Ví dụ về so sánh danh sách trong python tại ITMASTER.VN
list1 = [11, 12, 13, 14, 15]  
list2 = [12, 13, 11, 15, 14]  
  
a = set(list1)  
b = set(list2)  
  
if a == b:  
    print("List1 và List2 giống nhau")  
else:  
    print("List1 và List2 khác nhau")
   

Kết quả :

Chúng ta đã khai báo hai danh sách được so sánh với nhau và đã chuyển đổi các danh sách đó thành tập hợp. Sau đó, so sánh từng phần tử với sự trợ giúp của toán tử ==. Tất cả các phần tử đều bằng nhau trong cả hai danh sách, sau đó nếu khối được thực thi và in kết quả.

Có thể bạn cần →   Cách ép kiểu từ Int sang String trong Python

Phương thức sort() với toán tử ==

Lưu ý: Trong phương thức sort(), chúng ta có thể chuyển các mục trong danh sách theo bất kỳ thứ tự nào vì chúng ta đang sắp xếp danh sách trước khi so sánh.

# Ví dụ so sánh danh sách trong Python với phương thức sort() với toán tử ==
# Ví dụ soạn thảo bởi ITMASTER.VN
import collections  
  
list1 = [10, 20, 30, 40, 50, 60]  
list2 = [10, 20, 30, 50, 40, 70]  
list3 = [50, 10, 30, 20, 60, 40]  
  
# Sorting the list  
list1.sort()  
list2.sort()  
list3.sort()  
  
  
if list1 == list2:  
    print("List1 và List2 giống nhau")  
else:  
    print("List1 và List3 không giống nhau")  
  
if list1 == list3:  
    print("List1 và List2 không giống nhau")  
else:  
    print("List1 và List2 không giống nhau")  

Hàm sort() trong Python được sử dụng để sắp xếp danh sách. Các phần tử của cùng một danh sách có cùng vị trí chỉ mục, danh sách bằng nhau.

Hàm collection.counter()

 Phương thức này so sánh danh sách một cách hiệu quả. Nó lưu trữ dữ liệu ở định dạng từ điển <value>:<frequency> và đếm tần suất xuất hiện của các mục trong danh sách.

Lưu ý: Thứ tự của các phần tử trong danh sách không quan trọng trong chức năng này.

# Ví dụ so sánh danh sách trong Python với phương thức collection.counter()
# Ví dụ soạn thảo bởi ITMASTER.VN
import collections  
  
list1 = [10, 20, 30, 40, 50, 60]  
list2 = [10, 20, 30, 50, 40, 70]  
list3 = [50, 10, 30, 20, 60, 40]  
  
  
if collections.Counter(list1) == collections.Counter(list2):  
    print("List1 và List2 không giống nhau")  
else:  
    print("List1 và List2 không giống nhau")  
  
if collections.Counter(list1) == collections.Counter(list3):  
    print("List1 và List3 giống nhau")  
else:  
    print("List1 và List3 không giống nhau")  

Phương thức so sánh danh sách reduce() và map()

Hàm map() chấp nhận một hàm và đối tượng có thể lặp lại của Python (danh sách, bộ dữ liệu, chuỗi, v.v.) làm đối số và trả về một đối tượng bản đồ. Hàm thực hiện cho từng phần tử của danh sách và kết quả là trả về một trình vòng lặp.

Có thể bạn cần →   Danh sách các hàm cơ bản thường dùng trong lập trình Python

Bên cạnh đó, phương thức reduce() triển khai hàm đã cho cho đối tượng có thể lặp lại theo cách đệ quy.

Ở đây, chúng ta sẽ sử dụng kết hợp cả hai phương pháp. Hàm map() sẽ triển khai hàm (nó có thể là hàm lambda do người dùng xác định) cho mọi đối tượng có thể lặp lại và hàm reduce() đảm nhận việc đó sẽ áp dụng theo cách đệ quy.

Chúng ta cần nhập mô-đun functool để sử dụng hàm reduce().

# Phương thức so sánh danh sách reduce() và map()
# Ví dụ soạn thảo bởi ITMASTER.VN
import functools  
  
list1 = [10, 20, 30, 40, 50]  
list2 = [10, 20, 30, 50, 40, 60, 70]  
list3 = [10, 20, 30, 40, 50]  
  
if functools.reduce(lambda x, y: x and y, map(lambda a, b: a == b, list1, list2), True):  
    print("List1 và List2 giống nhau")  
else:  
    print("List1 và List2 không giống nhau")  
  
if functools.reduce(lambda x, y: x and y, map(lambda a, b: a == b, list1, list3), True):  
    print("List1 và List3 giống nhau")  
else:  
    print("List1 và List3 không giống nhau")  

Phần kết

Bài viết trên ITMASTER.VN đã trình bày một vài phương pháp để so sánh dữ liệu danh sách trong Python. Các cách trên có cách trình bày khá dễ hiểu cho người mới nhập môn món Python. Hy vọng bài viết sẽ giúp ích cho các bạn. Mọi thông tin thắc mắc vui lòng liên hệ email : hello@itmaster.vn

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x