Làm thế nào để bạn tìm thấy giao điểm của hai danh sách python?
Bài đăng này giải thích mã cho từng phương pháp và thảo luận về các yếu tố khác nhau cần xem xét khi quyết định sử dụng phương pháp nào Show
Đối với câu hỏi thực hành của chúng tôi, chúng tôi sẽ làm việc trên một chức năng tìm giao điểm của hai danh sách với các mục trùng lặp trong mỗi danh sách. Chẳng hạn, nếu chúng ta chuyển các danh sách [3, 4, 5]8 và [3, 4, 5]9 cho hàm, thì nó sẽ trả về danh sách 0 Mục lục Sử dụng các bộ để tìm giao điểm của hai danh sách trong PythonPhương pháp đầu tiên để tìm giao điểm của hai danh sách trong Python là chuyển đổi danh sách thành tập hợp và sử dụng toán tử 1 hoặc phương thức 2 tích hợp Nhưng trước tiên, một tập hợp là gì? Một tập hợp tương tự như một danh sách, ở chỗ nó có thể được sử dụng để lưu trữ một tập hợp các mục (chẳng hạn như tập hợp các số) Chẳng hạn, chúng ta có thể tạo một bộ để lưu trữ các số 1, 22, 43, 64 và 57 Để làm điều đó, chúng tôi sử dụng dấu ngoặc nhọn, như trong ví dụ bên dưới mySet = {1, 22, 43, 64, 57} Như bạn có thể thấy, việc tạo một tập hợp rất giống với việc tạo một danh sách, ngoại trừ việc cái trước sử dụng dấu ngoặc nhọn trong khi cái sau sử dụng dấu ngoặc vuông Một bộ thực sự rất giống với một danh sách. Tuy nhiên, có một số điểm khác biệt chính giữa chúng, như được giải thích trong bảng bên dưới Sự khác biệt chính giữa một tập hợp và một danh sáchListSetItems được sắp xếp (i. e. thứ tự của các mục là quan trọng)Do đó, 3 và 4 được coi là hai danh sách khác nhauCác mặt hàng không được đặt hàng (tôi. e. thứ tự của các mục bị bỏ qua) Do đó, 5 và 6 được coi là cùng một tập hợpCác mục không cần phải khác biệt 7 không sao đâuCác mục phải khác biệt 8 gây ra lỗi cho chúng tôi vì số 1 xuất hiện nhiều lần trong tập hợpCác mục không cần có thể băm*Các mục phải có thể băm* Ví dụ về các mục có thể băm bao gồm số nguyên, số dấu phẩy động và chuỗi Ví dụ về các mục không thể băm được bao gồm danh sách hoặc từ điển lồng nhau
Để tìm giao điểm của hai danh sách trong Python, chúng ta có thể chuyển đổi danh sách thành tập hợp và sử dụng toán tử 1 tích hợp sẵn hoặc phương thức 2 Hãy xem xét một số ví dụ Chuyển đổi danh sách thành tập hợp và sử dụng toán tử &list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect) Ở đây, trước tiên chúng tôi khai báo hai danh sách – list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 – trên dòng 1 và 2 Tiếp theo, ở dòng 4 và 5, chúng ta sử dụng hàm list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)3 để chuyển đổi danh sách thành tập hợp Ở dòng 7, chúng ta sử dụng toán tử 1 để tìm giao giữa hai tập hợp. Toán tử này trả về một tập hợp mới có các phần tử chung cho cả list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)5 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)6. Chúng tôi chuyển tập hợp kết quả này cho hàm list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)7 để chuyển đổi nó trở lại danh sách và gán danh sách kết quả cho list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)8 Cuối cùng, chúng tôi in giá trị của list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)8 trên dòng 9 Nếu bạn chạy mã ở trên, bạn sẽ nhận được đầu ra sau [3, 4, 5] Chuyển đổi danh sách thành tập hợp và sử dụng phương thức giao nhau ()Tiếp theo, hãy xem một ví dụ sử dụng phương pháp 2 Mặc dù toán tử 1 chỉ có thể được sử dụng trên hai bộ, phương thức 2 có thể được sử dụng với các loại lặp khác, chẳng hạn như danh sách hoặc bộ Cú pháp của nó như sau
Hãy xem một ví dụ list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect) Ở đây, chúng tôi chỉ chuyển đổi list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 thành một tập hợp. Điều này là do chúng ta có thể chuyển một danh sách (e. g. list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2) trực tiếp vào phương thức 2 mà không phải chuyển đổi danh sách thành tập hợp Chúng tôi làm điều đó trên dòng 6, nơi chúng tôi sử dụng list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)5 để gọi phương thức 2 và chuyển list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 làm đối số cho phương thức Phương thức này trả về một tập hợp. Chúng tôi chuyển đổi tập hợp trở lại danh sách bằng cách sử dụng hàm list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)7 và gán kết quả cho list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)8 Cuối cùng, chúng tôi in giá trị của list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)8 trên dòng 8 Nếu bạn chạy mã ở trên, bạn sẽ nhận được đầu ra sau [3, 4, 5] Lỗi khi chuyển đổi danh sách thành tập hợpCuối cùng nhưng không kém phần quan trọng, hãy xem một ví dụ mà chúng ta không thể chuyển đổi danh sách thành tập hợp. Điều đó xảy ra khi một hoặc nhiều mục trong danh sách không thể băm được. Ví dụ: nếu danh sách có danh sách lồng nhau (không thể băm), chúng tôi sẽ gặp lỗi khi cố gắng chuyển đổi danh sách thành tập hợp list1 = [1, 2, 3, 4, 5, [7, 8, 9]] set1 = set(list1) Nếu bạn chạy mã ở trên, bạn sẽ gặp lỗi sau Traceback (most recent call last): File "...", line ..., in Sử dụng hiểu danh sáchTrong phần trước, chúng ta đã thấy cách chuyển đổi danh sách thành tập hợp và sử dụng toán tử 1 hoặc phương thức 2 để tìm giao điểm của hai danh sách trong Python Tuy nhiên, chúng tôi cũng đã thấy điều đó có thể thất bại như thế nào khi danh sách của chúng tôi chứa các mục không thể băm được (chẳng hạn như danh sách lồng nhau) Trong những trường hợp như vậy, chúng ta có thể sử dụng khả năng hiểu danh sách để tìm giao điểm của hai danh sách. Điều này không yêu cầu chúng tôi chuyển đổi bất kỳ danh sách nào thành một tập hợp Để làm được điều đó, trước hết chúng ta cần hiểu. Nếu bạn không quen với việc hiểu danh sách, bạn có thể muốn tham khảo một số bài viết trước, chẳng hạn như và Tóm lại, một cách khả thi để sử dụng khả năng hiểu danh sách là sử dụng cú pháp sau [ Sử dụng khả năng hiểu danh sách để tạo danh sách giao lộ mớiGiả sử chúng ta có hai danh sách – list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 Nếu chúng tôi muốn thêm các mục trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 vào một danh sách mới có tên là list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)8, chỉ khi mục trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 cũng nằm trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1, chúng tôi mới có thể sử dụng mã bên dưới list1 = [1, 2, 3, 4] list2 = [3, 4, 5, 6] intersect = [x for x in list2 if x in list1] print(intersect) Dòng 4 trong đoạn mã trên cho biết rằng đối với mỗi mục trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 ( Traceback (most recent call last): File "...", line ..., in1), hãy thêm mục ( Traceback (most recent call last): File "...", line ..., in2) vào list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)8 nếu mục đó nằm trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 ( Traceback (most recent call last): File "...", line ..., in5) Nếu bạn chạy mã ở trên, bạn sẽ nhận được đầu ra sau list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)0 Điều này cho chúng ta giao điểm của hai danh sách – list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 Sử dụng khả năng hiểu danh sách để tìm giao điểm của hai danh sách với danh sách lồng nhauTiếp theo, hãy xem một ví dụ khác trong đó danh sách chứa danh sách lồng nhau list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)1 Nếu bạn chạy mã ở trên, bạn sẽ nhận được đầu ra sau list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)2 Điều này cho thấy khả năng hiểu danh sách hoạt động ngay cả với danh sách lồng nhau Sử dụng hàm filter() tích hợpCuối cùng nhưng không kém phần quan trọng, hãy xem phương pháp thứ ba để tìm giao điểm của hai danh sách trong Python – sử dụng hàm [3, 4, 5]7 Hàm [3, 4, 5]7 là một hàm tích hợp trong Python chấp nhận hai đối số – một hàm xác định các tiêu chí để lọc và một hàm có thể lặp lại để lọc Giả sử chúng ta có một danh sách có tên là [0, được định nghĩa như sau list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)3 Nếu chúng ta muốn lọc tất cả các số chẵn trong danh sách, chúng ta có thể định nghĩa một hàm trả về [1 khi nó được truyền vào một số chẵn Sau đó, chúng ta có thể chuyển chức năng này và danh sách [0 cho chức năng [3, 4, 5]7 Hãy xem một ví dụ về cách thức hoạt động của nó list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)4 Ở đây, trước tiên chúng tôi xác định danh sách [0 trên dòng 1 Tiếp theo, chúng ta định nghĩa một hàm có tên là [5 chấp nhận một đối số Traceback (most recent call last): File "...", line ..., in2 và trả về [1 nếu Traceback (most recent call last): File "...", line ..., in2 là số chẵn (i. e. nếu Traceback (most recent call last): File "...", line ..., in2 chia cho 2 dư 0) Tiếp theo, chúng ta gọi hàm [3, 4, 5]7 trên dòng 7, chuyển tên hàm ( list1 = [1, 2, 3, 4] list2 = [3, 4, 5, 6] intersect = [x for x in list2 if x in list1] print(intersect)1) và tên có thể lặp lại ( [0) cho hàm Hàm [3, 4, 5]7 trả về một đối tượng bộ lọc có thể được chuyển đổi thành danh sách, sử dụng hàm list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)7 tích hợp Chúng tôi làm điều đó trên dòng 7 và gán danh sách kết quả cho một biến có tên là list1 = [1, 2, 3, 4] list2 = [3, 4, 5, 6] intersect = [x for x in list2 if x in list1] print(intersect)5 Cuối cùng, chúng tôi in các giá trị của list1 = [1, 2, 3, 4] list2 = [3, 4, 5, 6] intersect = [x for x in list2 if x in list1] print(intersect)5 và [0 trên dòng 9 và 10 Nếu bạn chạy mã ở trên, bạn sẽ nhận được đầu ra sau list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)5 list1 = [1, 2, 3, 4] list2 = [3, 4, 5, 6] intersect = [x for x in list2 if x in list1] print(intersect)5 chỉ chứa các số chẵn vì đây là các mục trong [0 đã “vượt qua” tiêu chí bộ lọc, như được xác định bởi hàm [5 Mặt khác, [0 không bị thay đổi sau khi chúng ta chuyển nó cho hàm [3, 4, 5]7 Như đã đề cập trước đây, chúng ta có thể sử dụng hàm [3, 4, 5]7 để tìm giao điểm của hai danh sách trong Python. Hãy xem xét một số ví dụ Sử dụng hàm filter() để tìm giao điểm của hai danh sách trong Pythonlist1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)6 Ở đây, trước tiên chúng ta định nghĩa một hàm có tên là list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)04 trên các dòng 4 đến 6. Hàm này trả về [1 nếu Traceback (most recent call last): File "...", line ..., in2 nằm trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 Tiếp theo, chúng tôi sử dụng chức năng để lọc list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 trên dòng 8. Chúng tôi cũng chuyển đối tượng bộ lọc kết quả tới hàm list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)7 để chuyển đổi nó thành danh sách Cuối cùng, chúng tôi in giá trị của danh sách kết quả trên dòng 10 Nếu bạn chạy mã ở trên, bạn sẽ nhận được đầu ra sau list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)0 Sử dụng hàm filter() với hàm lambdaTiếp theo, hãy xem thêm một ví dụ về cách sử dụng hàm [3, 4, 5]7 để tìm giao điểm của hai danh sách trong Python. Lần này, thay vì truyền một hàm đã đặt tên cho hàm, chúng ta sẽ truyền một hàm lambda. Nếu bạn không quen với các hàm lambda, bạn có thể list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)8 Ở đây, hàm lambda là list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)9 Hàm đánh giá biểu thức list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)11 cho mỗi đầu vào Traceback (most recent call last): File "...", line ..., in2 và trả về [1 nếu Traceback (most recent call last): File "...", line ..., in2 nằm trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 Chúng tôi chuyển hàm lambda này cho hàm [3, 4, 5]7 trên dòng 4 để lọc các mục trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 Nếu bạn chạy mã ở trên, bạn sẽ nhận được đầu ra sau list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)0 Không có gì đáng ngạc nhiên, ví dụ này cho kết quả đầu ra giống như ví dụ trước vì hàm lambda của nó thực hiện công việc tương tự như hàm list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)04 trong ví dụ trước Sử dụng phương pháp nào?Bây giờ chúng tôi đã đề cập đến ba phương pháp khác nhau để tìm giao điểm của hai danh sách trong Python, hãy thảo luận về một số yếu tố cần xem xét khi chọn sử dụng phương pháp nào Yếu tố đầu tiên cần xem xét là liệu danh sách của bạn có chứa các mục không thể băm được hay không (chẳng hạn như danh sách lồng nhau) Nếu đúng như vậy, bạn sẽ phải sử dụng khả năng hiểu danh sách hoặc hàm [3, 4, 5]7 Tiếp theo, yếu tố thứ hai cần xem xét là liệu danh sách của bạn có các mục trùng lặp hay không. Nếu danh sách của bạn có các mục trùng lặp và bạn muốn giao lộ tính đến các mục này thì không có phương pháp nào ở trên là lý tưởng Hãy xem xét một số ví dụ [3, 4, 5]1 Nếu bạn chạy mã ở trên, bạn sẽ nhận được đầu ra sau [3, 4, 5]2 Khi chúng tôi chuyển đổi danh sách thành tập hợp, các mục trùng lặp sẽ bị xóa. Chẳng hạn, nếu list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)20, list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)21 cho chúng ta tập hợp list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)22 Do đó, trong ví dụ đầu tiên ở trên, khi chúng tôi chuyển đổi list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 thành tập hợp và sử dụng toán tử 1 hoặc phương thức 2 để tìm giao của hai tập hợp, tập hợp kết quả không chứa bất kỳ phần tử trùng lặp nào Do đó, chúng tôi nhận được list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)27 làm đầu ra cho cả list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)28 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)29 Tiếp theo, đối với ví dụ thứ hai, lưu ý rằng chúng tôi nhận được một câu trả lời khác cho list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)30 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)31? Điều này là do đối với list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2. Mặt khác, đối với list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)31, chúng tôi lặp lại thông qua list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 để kiểm tra xem mục đó có nằm trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 không. Điều này mang lại cho chúng tôi các kết quả khác nhau vì kết quả của list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)30 dựa trên list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1. Do đó, số 3 xuất hiện hai lần trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)30 vì có hai số 3 trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1. Tương tự, số 5 xuất hiện hai lần vì có hai số 5 trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 Ngược lại, kết quả cho list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)31 dựa trên list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2. Do đó, số 3 xuất hiện ba lần trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)31 trong khi số 5 xuất hiện một lần Sự khác biệt tương tự trong các câu trả lời có thể được tìm thấy khi chúng ta sử dụng hàm [3, 4, 5]7 để tìm giao điểm của list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 (tham khảo ví dụ 3) Nếu chúng tôi không muốn sự khác biệt như vậy trong câu trả lời của mình, chúng tôi sẽ cần viết chức năng của riêng mình Điều này đưa chúng ta đến câu hỏi thực hành cho ngày hôm nay câu hỏi thực hànhCâu hỏi thực hành cho ngày hôm nay là viết một hàm tên là list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)49 nhận hai danh sách làm đối số. Chúng ta có thể giả sử rằng hai danh sách chỉ chứa các mục có thể băm Hàm tìm giao điểm của hai danh sách, dựa trên số lần một mục xuất hiện trong cả hai danh sách . Chẳng hạn, giả sử chúng ta có các danh sách list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)50 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)51, kết quả là hàm của chúng ta sẽ trả về list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)52 Mặc dù 1 xuất hiện ba lần trong danh sách thứ hai, nhưng nó chỉ xuất hiện hai lần trong danh sách đầu tiên. Do đó, 1 xuất hiện hai lần trong giao lộ Tương tự, mặc dù 2 xuất hiện ba lần trong danh sách đầu tiên nhưng nó chỉ xuất hiện một lần trong danh sách thứ hai. Do đó, 2 xuất hiện một lần trong giao lộ Như bạn có thể thấy, giao điểm không dựa trên danh sách thứ nhất hoặc thứ hai. Thay vào đó, nó dựa trên số lần một mục xuất hiện trong cả hai danh sách . Kết quả mong đợiĐể kiểm tra chức năng của bạn, bạn có thể chạy các câu lệnh sau [3, 4, 5]3 Nếu bạn chạy mã ở trên, bạn sẽ nhận được đầu ra sau [3, 4, 5]4 gợi ýCó nhiều hơn một cách để hoàn thành câu hỏi thực hành cho ngày hôm nay. Giải pháp gợi ý sử dụng lớp list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)53 và phương thức list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)54 cho danh sách Bạn có thể muốn tham khảo các bài viết sau nếu bạn cần trợ giúp
giải pháp đề xuấtĐây là giải pháp gợi ý cho câu hỏi ngày hôm nay Nhấp để xem giải pháp được đề xuất [3, 4, 5]5 Ở đây, trước tiên chúng tôi nhập lớp list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)53 trên dòng 1 Tiếp theo, chúng ta định nghĩa hàm list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)49 từ dòng 3 đến dòng 17 Trong hàm, chúng ta chuyển các đối tượng list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 cho hàm tạo list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)59 và gán các đối tượng list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)53 cho list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)61 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)62 Một đối tượng list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)53 cho biết số lần một mục xuất hiện trong một lần lặp Chẳng hạn, list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)64 cho chúng ta đối tượng list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)53 list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)66, vì list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)67 xuất hiện hai lần ( list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)68) trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)69 trong khi list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)70 xuất hiện một lần ( list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)71) Nếu chúng ta gán đối tượng này cho một biến, chẳng hạn như list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)72, thì chúng ta có thể truy cập các giá trị trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)72 giống như cách chúng ta truy cập các giá trị trong từ điển Chẳng hạn, list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)74 cho chúng ta giá trị 2 Trong giải pháp được đề xuất của chúng tôi, list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)61 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)62 cung cấp cho chúng tôi tần suất của từng mục trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 Sau khi chúng tôi nhận được tần số này, chúng tôi đã sẵn sàng để tìm giao điểm của hai danh sách. Trước tiên, chúng tôi tìm giao lộ không trùng lặp. Để làm điều đó, chúng tôi chuyển đổi list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 thành bộ và sử dụng toán tử 1 để lấy giao điểm Tiếp theo, chúng tôi chuyển giao điểm này thành một danh sách và gán danh sách kết quả cho list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)82 (trên dòng 11) Tiếp theo, chúng tôi khởi tạo một danh sách trống có tên là list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)83 Sau đó, chúng tôi sử dụng vòng lặp list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)84 để lặp qua list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)82 (dòng 14 và 15) Ở dòng 15, list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)86 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)87 cho biết số lần list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)88 xuất hiện lần lượt trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)1 và list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) intersect = list(set1.intersection(list2)) print(intersect)2 Ví dụ, giả sử [3, 4, 5]6 list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)82 bằng với list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)92 Lần đầu tiên vòng lặp list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)84 chạy, list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)88 bằng 1 list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)95 cho chúng tôi 2 trong khi list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)96 cho chúng tôi 3 list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)97 cho chúng ta số thấp hơn trong hai số, là 2 list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)98 mang lại cho chúng tôi list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)99, tương đương với [3, 4, 5]00 Sau đó, chúng tôi chuyển danh sách này sang phương pháp list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)54 để thêm nó vào list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)83 Chúng tôi tiếp tục làm điều này cho đến khi chúng tôi hoàn thành việc lặp qua tất cả các mục trong list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)82 Khi điều đó xảy ra, list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)83 chứa tất cả các mục trùng lặp mà chúng tôi cần cho giao lộ. Do đó, chúng tôi chỉ cần trả lại list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] set1 = set(list1) set2 = set(list2) intersect = list(set1 & set2) print(intersect)83 trên dòng 17 Làm cách nào để tìm giao điểm của nhiều hơn hai danh sách trong Python?Giải pháp. Để cắt một danh sách các tập hợp, hãy sử dụng chiến lược sau. . Lấy phần tử đầu tiên từ danh sách làm điểm bắt đầu. . Gọi phương thức giao nhau () trên đối tượng được đặt đầu tiên Chuyển tất cả các tập hợp làm đối số vào phương thức giao nhau() bằng cách giải nén danh sách bằng toán tử *list Giao điểm () Python là gì?Python Đặt giao điểm ()
. Nghĩa. Bộ được trả về chỉ chứa các mục tồn tại trong cả hai bộ hoặc trong tất cả các bộ nếu so sánh được thực hiện với nhiều hơn hai bộ. returns a set that contains the similarity between two or more sets. Meaning: The returned set contains only items that exist in both sets, or in all sets if the comparison is done with more than two sets. |