Kiểm tra hai danh sách bằng python
Hãy thảo luận về những cách Pythonic nhất để hoàn thành những vấn đề này. Chúng tôi bắt đầu với năm cách để thực hiện so sánh Boolean và xem xét năm cách để thực hiện sự khác biệt đơn giản, tiếp theo Show
So sánh BooleanCách Pythonic nhất để kiểm tra xem hai danh sách được sắp xếp có giống nhau không Xem video này trên YouTube Câu trả lời ngắn. Cách Pythonic nhất để kiểm tra xem hai danh sách có thứ tự l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True3 và l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True4 có giống nhau hay không, là sử dụng toán tử # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False0 để so sánh từng phần tử. Nếu tất cả các phần tử đều bằng nhau và độ dài của các danh sách giống nhau, thì giá trị trả về là l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True5 Vấn đề. Đưa ra là hai danh sách l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True3 và l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True4. Bạn muốn thực hiện So sánh Boolean. So sánh danh sách theo từng phần tử và trả về l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True5 nếu chỉ số so sánh của bạn trả về l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True5 cho tất cả các cặp phần tử và nếu không thì trả về l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True7 ví dụ l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True Hãy thảo luận về những cách Pythonic nhất để giải quyết vấn đề này. Dưới đây là tổng quan về mã tương tác nhanh Tập thể dục. Lướt qua tất cả các phương thức và chạy mã. Những câu hỏi đến với tâm trí? Đọc tiếp để tìm hiểu chi tiết về từng phương pháp Phương pháp 1. So sánh đơn giảnKhông phải lúc nào phương pháp đơn giản nhất cũng là phương pháp tốt nhất. Nhưng đối với vấn đề cụ thể này, nó là. Toán tử đẳng thức # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False7 so sánh phần tử danh sách một cách khôn ngoan — nhiều lập trình viên Python không biết điều này # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False Vì vậy, nếu bạn chỉ muốn tìm hiểu về cách Pythonic nhất để giải quyết vấn đề này, thì không cần tìm đâu xa Nhưng nếu bạn muốn đi sâu vào thế giới tuyệt vời của Python, tìm hiểu về các hàm Python thú vị và mạnh mẽ khác nhau, hãy đọc tiếp Phương pháp 2. Đơn giản cho vòng lặpPhương pháp sau đây là những gì bạn sẽ thấy từ một lập trình viên đến từ một ngôn ngữ lập trình khác hoặc từ một người mới bắt đầu không biết về toán tử đẳng thức trong danh sách (xem Phương pháp 1) l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True2 Trong mã, bạn lặp lại tất cả các chỉ số từ 0 đến vị trí cuối cùng của danh sách nhỏ nhất như được xác định bởi phần # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False8. Sau đó, bạn kiểm tra xem cả hai yếu tố ở cùng một vị trí có khác nhau không. Nếu chúng khác nhau, tôi. e. , # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False9, bạn có thể trả lại ngay l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True7 vì các danh sách cũng khác nhau Nếu bạn đã đi qua toàn bộ vòng lặp mà không trả về l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True7, thì các phần tử của danh sách cũng tương tự. Nhưng một danh sách vẫn có thể dài hơn. Vì vậy, bằng cách trả về l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True22, bạn đảm bảo chỉ trả về l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True5 nếu (1) tất cả các phần tử đều bằng nhau và (2) các danh sách có cùng độ dài Rất nhiều mã để thực hiện một điều đơn giản như vậy. Hãy xem cách một lập trình viên giỏi hơn sẽ tận dụng hàm l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True24 để giảm độ phức tạp của mã Phương pháp 3. zip() + Đối với vòng lặpHàm zip lấy một số lần lặp và tổng hợp chúng thành một lần duy nhất bằng cách kết hợp các giá trị thứ i của mỗi lần lặp thành một bộ cho mỗi lần lặp i. Hãy xem cách bạn có thể sử dụng hàm này để làm cho mã trước đó ngắn gọn hơn # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False0 Thay vì lặp qua các chỉ số, giờ đây bạn lặp qua các cặp phần tử (các phần tử được nén lại với nhau). Nếu các danh sách có kích thước khác nhau, các phần tử còn lại trong danh sách dài hơn sẽ bị bỏ qua. Bằng cách này, việc so sánh từng phần tử trở nên đơn giản hơn và không yêu cầu các lược đồ lập chỉ mục phức tạp. Chắc chắn tránh các chỉ mục bằng hàm l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True24 là một cách Pythonic hơn Phương pháp 4. tổng() + zip() + len()Nhưng các lập trình viên Python thực sự thường sẽ tránh vòng lặp for và thay vào đó sử dụng biểu thức trình tạo
# 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False4 Từ các phương thức ngoại trừ phương thức đầu tiên sử dụng toán tử # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False7, đây là cách Pythonic nhất do sử dụng các hàm trợ giúp Python hiệu quả như l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True29 và các biểu thức trình tạo để làm cho mã ngắn gọn hơn và dễ đọc hơn Bạn cũng có thể viết điều này trong một dòng mã # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False7 Nếu bạn yêu thích Python one-liners, hãy xem cuốn sách mới Python One-liners của tôi với nhà xuất bản nổi tiếng quốc tế NoStarch press. (Liên kết Amazon) Phương pháp 5. map() + giảm() + len()Phương pháp cuối cùng chỉ là rèn luyện kỹ năng lập trình chức năng của bạn # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False8 Hàm # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False00 kết hợp tất cả các cặp phần tử thành giá trị Boolean (hai phần tử có bằng nhau không?). Hàm ____201 kết hợp tất cả các giá trị Boolean thực hiện phép toán # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False02. Chắc chắn rồi, bạn cũng có thể sử dụng biến thể ngắn gọn hơn bằng cách sử dụng hàm # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False03 Phương pháp 6. bản đồ() + tất cả()Phương pháp này giống như phương pháp trước—nhưng sử dụng hàm # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False03 thay vì # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False05 để kết hợp tất cả các giá trị Boolean trong một phép toán và toàn cục l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True5 Nếu bạn muốn học điều gì đó mới mỗi ngày, hãy tham gia chuỗi email Python miễn phí của tôi để không ngừng cải thiện Python và khoa học máy tính Bài báo gốc. Cách Pythonic nhất để kiểm tra xem hai danh sách được sắp xếp có giống nhau không Sự khác biệtCâu trả lời ngắn. Cách Pythonic nhất để tính toán sự khác biệt giữa hai danh sách l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True3 và l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True4 là câu lệnh hiểu danh sách # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False08. Điều này hoạt động ngay cả khi bạn có các mục nhập danh sách trùng lặp, nó duy trì thứ tự danh sách ban đầu và nó hiệu quả do độ phức tạp thời gian chạy liên tục của thao tác thành viên đã đặt Cách tốt nhất để tính toán sự khác biệt giữa hai danh sách trong Python là gì? l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True9 Hãy có một cái nhìn tổng quan trong vỏ mã tương tác sau đây Tập thể dục. Chạy mã và suy nghĩ về cách ưa thích của bạn Hãy đi sâu vào từng phương pháp để tìm ra phương pháp Pythonic nhất cho kịch bản cụ thể của bạn Phương pháp 1. Đặt sự khác biệtCách tiếp cận đơn giản để giải quyết vấn đề này là chuyển đổi cả hai danh sách thành các tập hợp và sử dụng phép toán tập trừ (hoặc tập hợp) l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True0 Cách tiếp cận này thanh lịch vì nó dễ đọc, hiệu quả và ngắn gọn Tuy nhiên, có một số thuộc tính duy nhất của phương pháp này mà bạn nên biết
Nếu cả ba thuộc tính đều được bạn chấp nhận, thì đây là cách tiếp cận hiệu quả nhất được đánh giá ở phần sau của bài viết này Tuy nhiên, làm thế nào bạn có thể duy trì thứ tự của các phần tử danh sách ban đầu trong khi vẫn cho phép trùng lặp? Phương pháp 2. Danh sách hiểuHiểu danh sách là một cách nhỏ gọn để tạo danh sách. Công thức đơn giản là # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False40
Bạn có thể sử dụng khả năng hiểu danh sách để xem qua tất cả các phần tử trong danh sách đầu tiên nhưng bỏ qua chúng nếu chúng nằm trong danh sách thứ hai l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True1 Chúng tôi đã sử dụng một cách tối ưu hóa nhỏ nhưng hiệu quả để chuyển đổi danh sách thứ hai # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False43 thành một tập hợp đầu tiên. Lý do là việc kiểm tra tư cách thành viên # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False44 cho bộ nhanh hơn nhiều so với danh sách. Tuy nhiên, về mặt ngữ nghĩa, cả hai biến thể đều giống hệt nhau Dưới đây là các thuộc tính đặc biệt của phương pháp này
Nếu bạn dựa vào những đảm bảo mạnh mẽ hơn này, hãy sử dụng phương pháp hiểu danh sách vì đó là phương pháp Pythonic nhất Phương pháp 3. Đơn giản cho vòng lặpĐáng ngạc nhiên là một số hướng dẫn trực tuyến khuyên bạn nên sử dụng vòng lặp for lồng nhau (e. g. , những chàng trai ấy) l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) --> False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) --> True2 Theo tôi, cách tiếp cận này sẽ chỉ được sử dụng bởi những người mới bắt đầu hoặc lập trình viên đến từ các ngôn ngữ lập trình khác như C ++ hoặc Java và không biết các tính năng thiết yếu của Python như hiểu danh sách. Bạn có thể tối ưu hóa phương pháp này bằng cách chuyển đổi danh sách # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False43 thành một tập hợp trước tiên để tăng tốc độ kiểm tra # 1. Simple Comparison def method_1(l1, l2): return l1 == l2 l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_1(l1, l2)) # False46 lên một mức đáng kể Bài báo gốc. Liệt kê sự khác biệt. Cách Pythonic nhất Đi đâu từ đây?Đủ lý thuyết. Hãy thực hành một số Các lập trình viên được trả sáu con số trở lên vì họ có thể giải quyết vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa Để trở nên thành công hơn trong việc viết mã, hãy giải quyết nhiều vấn đề thực tế hơn cho người thực. Đó là cách bạn trau dồi những kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, việc sử dụng lý thuyết học tập mà không ai cần là gì? Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế Bạn có muốn ngừng học với các dự án đồ chơi và tập trung vào các dự án mã thực tế giúp bạn kiếm tiền và giải quyết các vấn đề thực sự cho mọi người không? 🚀 Nếu câu trả lời của bạn là CÓ. , cân nhắc trở thành nhà phát triển Python tự do. Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện kỹ năng Python của bạn—ngay cả khi bạn là người hoàn toàn mới bắt đầu Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi “Cách xây dựng kỹ năng Python có thu nhập cao của bạn” và tìm hiểu cách tôi phát triển công việc viết mã của mình trực tuyến cũng như cách bạn có thể làm được—từ sự thoải mái của bạn Tham gia hội thảo trên web miễn phí ngay bây giờ Chris Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners (NoStarch 2020), đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây Python kiểm tra xem hai danh sách có bằng nhau không?Chúng ta có thể kết hợp phương thức sort() của Python với toán tử == để so sánh hai danh sách. Phương thức sort() trong Python được sử dụng để sắp xếp danh sách đầu vào với mục đích nếu hai danh sách đầu vào bằng nhau thì các phần tử sẽ nằm ở cùng vị trí chỉ mục.
Làm cách nào để so sánh hai danh sách mà không có thứ tự Python?So sánh xem hai danh sách không có thứ tự (danh sách không có thứ tự) có bằng nhau hay không . sắp xếp danh sách và sử dụng toán tử == chuyển đổi chúng thành set s và sử dụng toán tử == sử dụng deepdiff |