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 Show
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 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áchKhi 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
{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áchTrong 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áchGiố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áchTrong 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áchTrướ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 # 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áchMộ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, |