Sự giống nhau của python giữa hai danh sách

Trong bài viết này, chúng ta sẽ thảo luận về 10 cách khác nhau để so sánh hai danh sách và nhận ra sự khác biệt của chúng. e. các yếu tố có mặt trong một danh sách nhưng không có trong một danh sách khác

Giả sử chúng ta có hai danh sách,

first_list = [10, 11, 12, 13, 14, 16, 15]
sec_list = [10, 11, 12, 18, 19, 16]

Bây giờ có thể có một số yếu tố có trong danh sách đầu tiên nhưng bị thiếu trong danh sách thứ hai. Trong khi đó, cũng có một số yếu tố có mặt trong danh sách thứ hai nhưng thiếu trong danh sách đầu tiên. Chúng tôi muốn so sánh hai danh sách của chúng tôi và nhận được tất cả những khác biệt này
Giống như trong hai danh sách đã đề cập ở trên, sự khác biệt là,

18, 19, 13, 14, 15

Có nhiều cách để so sánh hai danh sách và nhận được sự khác biệt. Hãy thảo luận từng cái một,

quảng cáo

Sử dụng set để nhận sự khác biệt giữa hai danh sách

Khi chúng ta tạo một tập hợp từ danh sách thì nó chỉ chứa các phần tử duy nhất của danh sách. Vì vậy, hãy chuyển đổi danh sách của chúng ta thành các tập hợp và sau đó chúng ta có thể trừ các tập hợp này để có được sự khác biệt giữa chúng. e

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)

đầu ra

Đọc thêm

  • con trăn. cục mịch. hàm ravel() Hướng dẫn với các ví dụ
  • Tạo Danh sách các số từ 1 đến N trong Python
  • gấu trúc. Kiểm tra xem giá trị có tồn tại trong DataFrame hay không bằng cách sử dụng trong &…
  • con trăn. Đếm các phần tử trong một danh sách thỏa mãn một số…

{18, 19, 13, 14, 15}

Chúng tôi có sự khác biệt giữa cả hai danh sách tôi. e. các phần tử nằm trong danh sách này nhưng không có trong danh sách khác. Nhưng những gì vừa xảy ra ở đây?

Làm thế nào nó hoạt động?

Đầu tiên lấy các phần tử có trong first_list nhưng không có trong sec_list,

# Get elements which are present in first_list but not in sec_list
diff1 = set(first_list) - set(sec_list)

print(diff1)

đầu ra

{13, 14, 15}

Sau đó lấy các phần tử có trong sec_list nhưng không có trong first_list,

# Get elements which are present in sec_list but not in first_list
diff2 = set(sec_list) - set(first_list)

print(diff2)

đầu ra

{18, 19}

Bây giờ hãy thêm cả hai tập kết quả để có được sự khác biệt hoàn toàn giữa hai danh sách,

________số 8_______

đầu ra

{18, 19, 13, 14, 15}

Sử dụng bộ. differ() để nhận sự khác biệt giữa hai danh sách

Trong giải pháp trước, thay vì trừ hai tập hợp bằng toán tử –, chúng ta có thể sử dụng hàm differ() của tập hợp để lấy hiệu

Vì vậy, hãy chuyển đổi các danh sách của chúng ta thành các tập hợp và sau đó chúng ta có thể trừ các tập hợp này bằng cách sử dụng hàm differ() để có được sự khác biệt trong hai danh sách i. e

18, 19, 13, 14, 15
0

đầu ra

{18, 19, 13, 14, 15}

So sánh và nhận sự khác biệt giữa hai danh sách không có bộ

Thay vì chuyển đổi danh sách thành tập hợp và so sánh. Chúng ta có thể lặp lại danh sách đầu tiên và đối với từng phần tử trong danh sách đó, hãy kiểm tra xem danh sách thứ hai có chứa phần tử đó hay không. Nó sẽ cung cấp các phần tử có trong danh sách đầu tiên nhưng bị thiếu trong danh sách thứ hai i. e

18, 19, 13, 14, 15
2

đầu ra

18, 19, 13, 14, 15
3

Sau đó, sử dụng logic tương tự theo thứ tự ngược lại i. e. lặp lại danh sách thứ hai và đối với từng phần tử trong danh sách đó, hãy kiểm tra xem danh sách đầu tiên có chứa phần tử đó hay không. Nó sẽ cung cấp các phần tử có trong danh sách thứ hai nhưng bị thiếu trong danh sách đầu tiên tôi. e

18, 19, 13, 14, 15
4

đầu ra

18, 19, 13, 14, 15
5

Bây giờ hãy kết hợp các diff1 và diff2 này để có được sự khác biệt hoàn toàn giữa hai danh sách,

18, 19, 13, 14, 15
6

đầu ra

18, 19, 13, 14, 15
7

Sử dụng tính năng Hiểu danh sách để biết sự khác biệt giữa hai danh sách

Giống như giải pháp trước đó, chúng ta có thể lặp lại cả hai danh sách và tìm kiếm các phần tử trong các danh sách khác để nhận được sự khác biệt. Nhưng để lặp lại, chúng tôi sẽ sử dụng khả năng hiểu danh sách

Danh sách ra là,

18, 19, 13, 14, 15
8

Nhận các phần tử có trong danh sách đầu tiên nhưng bị thiếu trong danh sách thứ hai i. e

18, 19, 13, 14, 15
9

Nhận các phần tử có trong danh sách thứ hai, nhưng bị thiếu trong danh sách đầu tiên i. e

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
0

Bây giờ kết hợp diff1 và diff2 này để có sự khác biệt hoàn toàn giữa hai danh sách,

18, 19, 13, 14, 15
6

đầu ra

18, 19, 13, 14, 15
7

Sử dụng bộ. symmetric_difference() để nhận sự khác biệt giữa hai danh sách

Trong tất cả các giải pháp trước đó, chúng tôi có tất cả sự khác biệt giữa hai danh sách trong hai bước. Nhưng sử dụng symmetric_difference() chúng ta có thể đạt được điều đó chỉ trong một bước

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
3

symmetric_difference() là một hàm thành viên của tập hợp và chấp nhận một chuỗi khác làm đối số. Nó trả về một tập hợp mới với các phần tử đang gọi đối tượng tập hợp hoặc đối số chuỗi, nhưng không phải trong cả hai. Vì vậy, về cơ bản, nó trả về sự khác biệt giữa cả tập hợp và danh sách. Hãy sử dụng điều này để có được sự khác biệt giữa hai danh sách,

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
4

đầu ra

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
5

Chúng tôi đã chuyển đổi danh sách đầu tiên của mình thành một tập hợp, sau đó gọi symmetric_difference() trên đối tượng tập hợp đó và chuyển danh sách thứ hai làm đối số. Nó trả về sự khác biệt giữa chúng

Sử dụng công đoàn () và giao lộ () để nhận sự khác biệt giữa hai danh sách

Trước hết, chuyển đổi cả hai danh sách thành bộ. Sau đó lấy hợp của cả hai tập hợp,

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
6

đầu ra

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
7

union() trả về một tập hợp mới với tất cả các phần tử riêng biệt từ cả hai tập hợp
Sau đó lấy giao điểm của cả hai tập hợp,

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
8

đầu ra

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
9

giao điểm () trả về một tập hợp mới với tất cả các phần tử chung từ cả hai tập hợp

Bây giờ nếu chúng ta trừ tất cả các phần tử chung khỏi tất cả các phần tử riêng biệt thì chúng ta sẽ nhận được sự khác biệt giữa cả hai phần tử đó,

{18, 19, 13, 14, 15}
0

đầu ra

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
5

Vì vậy, đây là cách chúng ta có thể nhận được sự khác biệt giữa hai danh sách

Sử dụng set & ^ để nhận sự khác biệt giữa hai danh sách

Một giải pháp nhanh chóng khác là,

{18, 19, 13, 14, 15}
2

đầu ra

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
5

sử dụng numpy. setdiff1d() để nhận sự khác biệt giữa hai danh sách

{18, 19, 13, 14, 15}
4

setdiff1d() chấp nhận hai mảng làm đối số và trả về các giá trị duy nhất trong mảng1 không có trong mảng2. Vì vậy, hãy sử dụng điều này để có được sự khác biệt giữa hai danh sách,