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, 150
đầ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, 152
đầu ra
18, 19, 13, 14, 153
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, 154
đầu ra
18, 19, 13, 14, 155
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, 156
đầu ra
18, 19, 13, 14, 157
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, 158
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, 159
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, 156
đầu ra
18, 19, 13, 14, 157
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,