Hướng dẫn python compare two lists boolean - python so sánh hai danh sách boolean
Tôi đang cố gắng so sánh hai danh sách các chuỗi và trả lại các giá trị boolean. Nhưng nó luôn luôn trả về đúng hoặc chỉ sai. Show
Đầu ra phải là một danh sách có chứa như sau:
Tôi không thể tìm ra nó và tôi không hiểu, tại sao nó lại trả về [đúng, đúng, đúng] nếu tôi sử dụng! = Và trả về [sai, sai, sai] nếu tôi sử dụng == tôi? Tia Vấn đề: Cho là hai danh sách 5 and 6. You want to perform either of the following:
Ví dụ: Bạn bắt đầu với hai danh sách.: You start with two lists. l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # 1. Boolean Comparison result = False # 2. Difference result = [4, 5] Hãy để thảo luận về những cách pythonic nhất để thực hiện 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. So sánh BooleanCách pythonic nhất để kiểm tra xem hai danh sách được đặt hàng có giống hệt không Câu trả lời ngắn gọn: Cách pythonic nhất để kiểm tra xem hai danh sách được đặt hàng 5 and 6 are identical, is to use the l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # 1. Boolean Comparison result = False # 2. Difference result = [4, 5]2 operator for element-wise comparison. If all elements are equal and the length of the lists are the same, the return value is 7. Vấn đề: Cho là hai danh sách 5 and 6. You want to perform Boolean Comparison: Compare the lists element-wise and return 7 if your comparison metric returns 7 for all pairs of elements, and otherwise 9.Examples:: 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. Tại đây, một tổng quan về mã tương tác nhanh: Bài tập: Glance qua tất cả các phương pháp và chạy mã. Những câu hỏi nào đến với tâm trí? Bạn có hiểu từng phương pháp không?: Glance over all methods and run the code. What questions come to mind? Do you understand each method? Đọc để tìm hiểu về từng phương pháp một cách chi tiết! Phương pháp 1: So sánh đơn giảnKhông phải lúc nào cũng là phương pháp đơn giản nhất là phương pháp tốt nhất. Nhưng đối với vấn đề đặc biệt này, nó là! Nhà điều hành bình đẳng l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # 1. Boolean Comparison result = False # 2. Difference result = [4, 5]9 so sánh một yếu tố danh sá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ì đừng 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, hãy tìm hiểu về các chức năng 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 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ừ người mới bắt đầu không biết về toán tử bình đẳng trong danh sách (xem Phương pháp 1).Method 1). # 2. Simple For Loop def method_2(l1, l2): for i in range(min(len(l1), len(l2))): if l1[i] != l2[i]: return False return len(l1) == len(l2) l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_2(l1, l2)) # False 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 được xác định bởi phần 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. Sau đó, bạn kiểm tra xem cả hai phần tử ở cùng một vị trí là khác nhau. Nếu chúng khác nhau, tức 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) --> True1, bạn có thể ngay lập tức trả lại 9 vì các danh sách cũng khác nhau.Nếu bạn đã trải qua toàn bộ vòng lặp mà không trả lại 9, các yếu tố danh sách tương tự nhau. 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) --> True4, bạn đảm bảo chỉ trả về 7 nếu (1) tất cả các phần tử đều bằng nhau và (2) danh sách có cùng độ dài.Rất nhiều mã để hoàn thành một điều đơn giản như vậy! Hãy cùng xem cách một lập trình viên tốt hơn sẽ tận dụng chức năng 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) --> True6 để giảm độ phức tạp của mã. Phương pháp 3: zip () + cho 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 loại duy nhất bằng cách kết hợp các giá trị thứ i của mỗi giá trị có thể sử dụng được thành một tuple cho mỗi i. Hãy để xem cách bạn có thể sử dụng chức năng để làm cho mã trước đó ngắn gọn hơn: # 3. Zip + For Loop def method_3(l1, l2): for x, y in zip(l1, l2): if x != y: return False return len(l1) == len(l2) l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_3(l1, l2)) # False Thay vì lặp lại các chỉ số, bây giờ bạn lặp lại 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 yếu tố còn lại từ danh sách dài hơn sẽ bị bỏ qua. Bằng cách này, so sánh phần tử khôn ngoan trở nên đơn giản hơn và không cần phải có các sơ đồ lập chỉ mục phức tạp. Tránh các chỉ số 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) --> True6 là một cách pythonic hơn chắc chắn! Phương thức 4: sum () + zip () + len ()Nhưng các lập trình viên Python thực sự thường sẽ tránh được một vòng lặp và sử dụng biểu thức trình tạo thay thế.
# 4. Sum + Zip + Len def method_4(l1, l2): num_equal = sum(x == y for x, y in zip(l1, l2)) return num_equal == len(l1) == len(l2) l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_4(l1, l2)) # False print(method_4([1, 2], [1, 2])) # True Từ các phương pháp ngoại trừ phương pháp đầu tiên sử dụng toán tử l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # 1. Boolean Comparison result = False # 2. Difference result = [4, 5]9, đây là cách pythonic nhất do sử dụng các chức năng của người trợ giúp Python hiệu quả như # 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)) # False1 và các biểu thức của Trình tạo để làm cho mã này ngắn gọn và dễ đọc hơn. Bạn cũng có thể viết điều này trong một dòng mã! sum(x == y for x, y in zip(l1, l2)) == len(l1) == len(l2) Nếu bạn yêu thích Python One-Liners, hãy xem cuốn sách mới Python Oneer 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) Python One-Liners with internationally renowned publisher NoStarch press. (Amazon Link) Phương pháp 5: Bản đồ () + Giảm () + Len ()Phương pháp cuối cùng chỉ là đào tạo kỹ năng lập trình chức năng của bạn. # 5. map() + reduce() + len() from functools import reduce def method_5(l1, l2): equal = map(lambda x, y: x == y, l1, l2) result = reduce(lambda x, y: x and y, equal) return result and len(l1) == len(l2) l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_5(l1, l2)) # False print(method_5([1, 2, 3], [1, 2, 3])) # True 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)) # False2 kết hợp tất cả các cặp phần tử với các giá trị boolean (là hai phần tử bằng nhau?). Hàm ____43 kết hợp tất cả các giá trị boolean thực hiện hoạt động # 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. Chắc chắn, 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)) # False5: Phương pháp 6: Bản đồ () + All ()Điều này giống như phương thức 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)) # False5 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)) # False7 để kết hợp tất cả các giá trị boolean trong toàn cầu và hoạt động.and operation. 0Nếu bạn muốn học một cái gì đó mới mỗi ngày, hãy tham gia chuỗi email Python miễn phí của tôi để cải tiến liên tục về Python và khoa học máy tính. Bài viết gốc: Cách pythonic nhất để kiểm tra xem hai danh sách được đặt hàng có giống hệt nhau khôngThe Most Pythonic Way to Check if Two Ordered Lists Are Identical Sự khác biệtCâu trả lời ngắn gọn: Cách pythonic nhất để tính toán sự khác biệt giữa hai danh sách 5 and 6 is the list comprehension statement # 2. Simple For Loop def method_2(l1, l2): for i in range(min(len(l1), len(l2))): if l1[i] != l2[i]: return False return len(l1) == len(l2) l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_2(l1, l2)) # False0. This works even if you have duplicate list entries, it maintains the original list ordering, and it’s efficient due to the constant runtime complexity of the set membership operation. Điều gì là cách tốt nhất để tính toán sự khác biệt giữa hai danh sách trong Python? 1Hãy để có một cái nhìn tổng quan trong Shell mã tương tác sau: Bài tập: Chạy mã và suy nghĩ về cách ưa thích của bạn!: Run the code and think about your preferred way! Hãy cùng đi sâu vào từng phương pháp để tìm 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 ngây thơ để giải quyết vấn đề này là chuyển đổi cả hai danh sách thành các bộ và sử dụng thao tác SET MINU (hoặc SET BENTER). 2Cách tiếp cận này là thanh lịch bởi vì nó có thể đọc được, hiệu quả và súc tích. Tuy nhiên, có một số thuộc tính duy nhất cho 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 như được đánh giá sau trong 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 yếu tố danh sách ban đầu trong khi cũng cho phép trùng lặp? Hãy cùng đi sâu vào danh sách hiểu biết thay thế!list comprehension alternative! Phương pháp 2: Danh sách hiểu biếtDanh sách hiểu là một cách nhỏ gọn để tạo danh sách. Công thức đơn giản là # 2. Simple For Loop def method_2(l1, l2): for i in range(min(len(l1), len(l2))): if l1[i] != l2[i]: return False return len(l1) == len(l2) l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_2(l1, l2)) # False2.
Bạn có thể sử dụng danh sách hiểu để xem tất cả các yếu 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: 3Chúng tôi đã sử dụng một tối ưu hóa nhỏ nhưng hiệu quả của việc chuyển đổi danh sách thứ hai # 2. Simple For Loop def method_2(l1, l2): for i in range(min(len(l1), len(l2))): if l1[i] != l2[i]: return False return len(l1) == len(l2) l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_2(l1, l2)) # False5 thành một tập hợp trước. Lý do là việc kiểm tra tư cách thành viên # 2. Simple For Loop def method_2(l1, l2): for i in range(min(len(l1), len(l2))): if l1[i] != l2[i]: return False return len(l1) == len(l2) l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_2(l1, l2)) # False6 nhanh hơn nhiều cho các bộ 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ì nó 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, một số hướng dẫn trực tuyến khuyến nghị sử dụng một vòng lặp cho vòng lặp (ví dụ: những người đó): 4Theo 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 tuyệt đối hoặc cá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à donith biết các tính năng python thiết yếu 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 # 2. Simple For Loop def method_2(l1, l2): for i in range(min(len(l1), len(l2))): if l1[i] != l2[i]: return False return len(l1) == len(l2) l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_2(l1, l2)) # False5 thành một tập hợp đầu tiên để tăng tốc kiểm tra # 2. Simple For Loop def method_2(l1, l2): for i in range(min(len(l1), len(l2))): if l1[i] != l2[i]: return False return len(l1) == len(l2) l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] print(method_2(l1, l2)) # False8 bằng một biên độ đáng kể. Bài viết gốc: Danh sách khác biệt | Cách pythonic nhất: List Difference | The Most Pythonic Way Đi đâu từ đây?Đủ lý thuyết. Hãy để có được một số thực hành! Các lập trình viên được trả tiền sáu con số và hơn thế nữa vì họ có thể giải quyết các 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 mã hóa, giải quyết nhiều vấn đề thực sự hơn cho người thực. Đó là cách bạn đánh bóng các kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, những gì mà việc sử dụng lý thuyết học tập mà không ai cần? 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 hỏi với các dự án đồ chơi và tập trung vào các dự án mã thực tế kiếm tiền cho bạn và giải quyết các vấn đề thực sự cho mọi người? Nếu câu trả lời của bạn là có !, Hãy xem xét việc trở thành một nhà phát triển tự do Python! Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện các kỹ năng trăn của bạn, ngay cả khi bạn là người mới bắt đầu hoàn toàn.YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner. 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 Làm thế nào để xây dựng kỹ năng thu nhập cao của bạn Python và tìm hiểu cách tôi phát triển kinh doanh mã hóa của mình trực tuyến và làm thế nào bạn có thể, từ sự thoải mái của bạn riêng nhà. Tham gia hội thảo trên web miễn phí ngay bây giờ! Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính. Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới. Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây. Làm thế nào để bạn so sánh hai giá trị boolean trong Python?Các toán tử so sánh: Các toán tử so sánh Python so sánh hai giá trị cùng loại và trả về giá trị boolean của đúng hoặc sai ... ==: Các nhà điều hành bằng với người vận hành .. ! = .... < : The “less than” operator.. >: Các nhà điều hành lớn hơn so với người vận hành .. <= : The “less than or equal to” operator.. Làm cách nào để so sánh hai giá trị danh sách trong Python?Các phương pháp để so sánh hai danh sách trong Python.. Hàm giảm () và map () .. Bộ sưu tập.Chức năng của Counter () .. Hàm python sort () cùng với == toán tử .. Hàm python set () cùng với == toán tử .. Chức năng khác biệt () .. Làm cách nào để so sánh hai danh sách và sự khác biệt trong Python?Có thể tìm thấy sự khác biệt giữa hai danh sách (giả sử List1 và List2) bằng cách sử dụng hàm đơn giản sau.Bằng cách sử dụng hàm trên, sự khác biệt có thể được tìm thấy bằng cách sử dụng Diff (TEMP2, TEMP1) hoặc DIFT (TEMP1, TEMP2).Cả hai sẽ cho kết quả ['bốn', 'ba'].diff(temp2, temp1) or diff(temp1, temp2) . Both will give the result ['Four', 'Three'] .
Làm thế nào để bạn so sánh hai danh sách trong Python trả về đúng hay sai?Câu trả lời ngắn gọn: Cách pythonic nhất để kiểm tra xem hai danh sách được đặt hàng L1 và L2 có giống hệt nhau hay không, là sử dụng toán tử L1 == L2 để so sánh phần tử khôn ngoan.Nếu tất cả các phần tử bằng nhau và độ dài của danh sách là như nhau, giá trị trả về là đúng.use the l1 == l2 operator for element-wise comparison. If all elements are equal and the length of the lists are the same, the return value is True . |