Giả sử tôi có hai danh sách danh sách trong Python,
l1 = [['a',1], ['b',2], ['c',3]] l2 = [['b',2], ['c',3], ['a',1]]Cách thanh lịch nhất để kiểm tra chúng bằng nhau theo nghĩa là các yếu tố của >>> l1 = [['a',1], ['b',2], ['c',3]] >>> l2 = [['b',2], ['c',3], ['a',1]] >>> print set(map(tuple,l1)) == set(map(tuple,l2)) True 5 chỉ đơn giản là một số hoán vị của các yếu tố trong >>> l1 = [['a',1], ['b',2], ['c',3]] >>> l2 = [['b',2], ['c',3], ['a',1]] >>> print set(map(tuple,l1)) == set(map(tuple,l2)) True 6?
Lưu ý để thực hiện điều này cho các danh sách thông thường xem tại đây, tuy nhiên điều này sử dụng >>> l1 = [['a',1], ['b',2], ['c',3]] >>> l2 = [['b',2], ['c',3], ['a',1]] >>> print set(map(tuple,l1)) == set(map(tuple,l2)) True 7 không hoạt động cho danh sách danh sách.
Hỏi ngày 22 tháng 12 năm 2014 lúc 15:42Dec 22, 2014 at 15:42
1
l1 = [['a',1], ['b',2], ['c',3]] l2 = [['b',2], ['c',3], ['a',1]] print sorted(l1) == sorted(l2)
Result:
TrueĐã trả lời ngày 22 tháng 12 năm 2014 lúc 15:43Dec 22, 2014 at 15:43
KevinkevinKevin
73.5K12 Huy hiệu vàng126 Huy hiệu bạc163 Huy hiệu Đồng12 gold badges126 silver badges163 bronze badges
>>> l1 = [['a',1], ['b',2], ['c',3]] >>> l2 = [['b',2], ['c',3], ['a',1]] >>> print set(map(tuple,l1)) == set(map(tuple,l2)) True 8 không hoạt động cho danh sách danh sách nhưng nó hoạt động cho danh sách các bộ dữ liệu. Sou bạn có thể >>> l1 = [['a',1], ['b',2], ['c',3]] >>> l2 = [['b',2], ['c',3], ['a',1]] >>> print set(map(tuple,l1)) == set(map(tuple,l2)) True 9 mỗi người phụ trợ để tìm kiếm và sử dụng >>> l1 = [['a',1], ['b',2], ['c',3]] >>> l2 = [['b',2], ['c',3], ['a',1]] >>> print set(map(tuple,l1)) == set(map(tuple,l2)) True 7 như:
>>> l1 = [['a',1], ['b',2], ['c',3]] >>> l2 = [['b',2], ['c',3], ['a',1]] >>> print set(map(tuple,l1)) == set(map(tuple,l2)) TrueĐã trả lời ngày 22 tháng 12 năm 2014 lúc 15:48Dec 22, 2014 at 15:48
Irshad Bhatirshad BhatIrshad Bhat
8.1611 Huy hiệu vàng22 Huy hiệu bạc33 Huy hiệu đồng1 gold badge22 silver badges33 bronze badges
1
Đối với một giải pháp lót cho câu hỏi trên, hãy tham khảo câu trả lời của tôi trong câu hỏi này
Tôi đang trích dẫn cùng một câu trả lời ở đây. Điều này sẽ hoạt động bất kể đầu vào của bạn là một danh sách đơn giản hay một danh sách lồng nhau.
Hãy để hai danh sách là List1 và List2, và yêu cầu của bạn là đảm bảo liệu hai danh sách có cùng yếu tố hay không, sau đó theo tôi, sau đây sẽ là cách tiếp cận tốt nhất:-
if ((len(list1) == len(list2)) and (all(i in list2 for i in list1))): print 'True' else: print 'False'Phần mã trên sẽ hoạt động theo nhu cầu của bạn, tức là tất cả các yếu tố của List1 nằm trong danh sách2 và ngược lại. Các yếu tố trong cả hai danh sách không cần phải theo cùng một thứ tự.Elements in both the lists need not to be in the same order.
Nhưng nếu bạn muốn chỉ kiểm tra xem tất cả các yếu tố của List1 có mặt trong List2 hay không, thì bạn chỉ cần sử dụng phần mã dưới đây:-
if all(i in list2 for i in list1): print 'True' else: print 'False'Sự khác biệt là, sau này sẽ in đúng, nếu List2 chứa một số yếu tố bổ sung cùng với tất cả các yếu tố của List1. Nói một cách đơn giản, nó sẽ đảm bảo rằng tất cả các yếu tố của List1 nên có trong List2, bất kể List2 có một số yếu tố bổ sung hay không.
Đã trả lời ngày 22 tháng 1 năm 2015 lúc 12:55Jan 22, 2015 at 12:55
Đây là 8 cách khác nhau để kiểm tra xem hai danh sách có bằng hoặc không ở Python hay không.
Ví dụ hoàn chỉnh như sau,
- Bạn có thể kiểm tra xem hai danh sách có bằng nhau không?
- Chúng ta có thể câu lạc bộ phương thức Python Sắp xếp () với toán tử == để so sánh hai danh sách. Phương thức python sort () được sử dụng để sắp xếp các 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 một vị trí chỉ mục.
Làm thế nào để bạn tìm thấy sự bình đẳng của hai danh sách?
Sử dụng phương thức list.sort () sắp xếp hai danh sách và toán tử == so sánh hai mục danh sách theo mục có nghĩa là chúng có các mục dữ liệu bằng nhau ở vị trí bằng nhau. Điều này kiểm tra xem danh sách có chứa các giá trị mục dữ liệu bằng nhau nhưng nó không tính đến thứ tự của các phần tử trong danh sách.
Trong bài viết này, chúng tôi sẽ thảo luận về 8 cách khác nhau để kiểm tra xem hai danh sách có bằng nhau hay không.
Giả sử chúng tôi có hai danh sách và chúng tôi muốn kiểm tra xem cả hai danh sách có bằng nhau hay không. Có thể có hai ý nghĩa của 2 bình đẳng ở đây,
Cả hai danh sách phải chứa các yếu tố duy nhất giống nhau và có cùng tần số, nhưng các phần tử có thể được đặt theo bất kỳ thứ tự nào.
Cả hai danh sách phải chính xác bằng nhau, tức là thứ tự của các yếu tố phải giống nhau.
Hãy để thảo luận về cả hai kịch bản một,
first_list = [10, 10, 11, 12, 12, 13, 14, 16, 15, 16, 12] sec_list = [16, 12, 13, 14, 15, 16, 10, 11, 12, 10, 12] if check_if_equal(first_list, sec_list): print('Lists are equal i.e. contain similar elements with same frequency') else: print('Lists are not equal')
Đầu ra:
Lists are equal i.e. contain similar elements with same frequencyĐầu tiên, nó đã kiểm tra xem cả hai danh sách có cùng kích thước hay không. Nếu cả hai có kích thước khác nhau thì nó có nghĩa là danh sách không bằng nhau. Trong khi đó, nếu cả hai danh sách có cùng kích thước, thì sau đó đã tạo một phiên bản được sắp xếp của cả hai danh sách và so sánh chúng bằng cách sử dụng toán tử == để kiểm tra xem danh sách có bằng hay không.
Vì vậy, đây là cách chúng ta có thể so sánh hai danh sách không phân biệt thứ tự của các yếu tố trong danh sách.
Sử dụng bộ sưu tập.Count () để kiểm tra xem hai danh sách có bằng không
Mô -đun bộ sưu tập cung cấp một lớp quầy. Chúng ta có thể tạo đối tượng của nó bằng cách chuyển một danh sách cho hàm tạo của nó,
Nó trả về một đối tượng bộ đếm, là một lớp con Dict và nó chứa số lượng tần số của từng phần tử duy nhất trong danh sách. Vì vậy, để kiểm tra xem hai & nbsp; Danh sách bằng hoặc không, chúng ta có thể tạo các đối tượng bộ đếm từ cả hai danh sách và sau đó so sánh chúng để kiểm tra xem cả hai danh sách có chứa các yếu tố duy nhất tương tự có cùng tần số không.
Ví dụ,
Đầu ra:
Lists are equal i.e. contain similar elements with same frequencySử dụng np.array_equal () để kiểm tra xem hai danh sách có bằng không
Chúng tôi có thể tạo hai mảng numpy được sắp xếp từ danh sách của chúng tôi và sau đó chúng tôi có thể so sánh chúng bằng cách sử dụng numpy.array_equal () để kiểm tra xem cả hai có chứa cùng một yếu tố không. Ví dụ,
Đầu ra:
Lists are equal i.e. contain similar elements with same frequencyCách tiếp cận này có thể hữu ích nếu chúng ta muốn so sánh một danh sách với một mảng numpy hoặc mảng đa chiều.
Kiểm tra xem hai danh sách có chính xác không | Thứ tự các yếu tố phải giống nhau
Giả sử chúng tôi có hai danh sách,
Bây giờ chúng tôi muốn kiểm tra xem cả hai danh sách có bằng chính xác hay không, tức là nếu cả hai danh sách chứa cùng một yếu tố và quá cùng thứ tự. Vì vậy, chúng ta cần so sánh cả hai phần tử danh sách theo phần tử. Có nhiều cách khác nhau để làm điều đó và để cho chúng tôi thảo luận từng người một,
Sử dụng == toán tử để kiểm tra xem hai danh sách có bằng nhau không
Chúng ta có thể so sánh trực tiếp hai danh sách bằng cách sử dụng toán tử ==. Nếu cả hai danh sách chính xác bằng chúng, nó sẽ trả về đúng sai,
Đầu ra:
l1 = [['a',1], ['b',2], ['c',3]] l2 = [['b',2], ['c',3], ['a',1]] print sorted(l1) == sorted(l2) 7Đó là cách dễ nhất và nhanh nhất để kiểm tra xem cả hai danh sách có chính xác không. Nhưng thật tốt khi biết một số lựa chọn khác quá.
Sử dụng các hàm map () và tất cả () để kiểm tra xem hai danh sách có bằng nhau không
l1 = [['a',1], ['b',2], ['c',3]] l2 = [['b',2], ['c',3], ['a',1]] print sorted(l1) == sorted(l2) 8Đầu ra:
l1 = [['a',1], ['b',2], ['c',3]] l2 = [['b',2], ['c',3], ['a',1]] print sorted(l1) == sorted(l2) 7Nó hoạt động như thế nào?
Hàm map () áp dụng hàm Lambda đã cho cho từng phần tử của cả danh sách và lưu trữ kết quả cho một mảng mới. Trong trường hợp của chúng tôi sẽ là một mảng bool bởi vì bên trong hàm Lambda, chúng tôi đang kiểm tra xem cả hai phần tử có bằng nhau hay không.
Đầu ra:
True 1Hàm bản đồ () trả về một mảng bool mới, trong đó mỗi mục nhập ith trong mảng bool này biểu thị nếu First_list [i] bằng với Sec_List [i] hoặc không. Nếu tất cả các yếu tố trong mảng bool này là đúng thì điều đó có nghĩa là cả hai danh sách đều bằng nhau. Chúng ta có thể làm điều này bằng cách sử dụng hàm (),
True 2Đầu ra:
True 3Hàm tất cả () chấp nhận một chuỗi như một đối số và trả về đúng nếu tất cả các phần tử trong chuỗi này là đúng. Vì vậy, đây là cách chúng ta có thể kiểm tra xem hai danh sách có chính xác không.
Sử dụng các hàm giảm () và map () để kiểm tra xem hai danh sách có bằng nhau không
True 4Đầu ra:
l1 = [['a',1], ['b',2], ['c',3]] l2 = [['b',2], ['c',3], ['a',1]] print sorted(l1) == sorted(l2) 7Nó hoạt động như thế nào? Hàm bản đồ () áp dụng hàm Lambda đã cho cho từng phần tử của cả danh sách và lưu trữ kết quả cho một mảng mới. Trong trường hợp của chúng tôi sẽ là một mảng bool bởi vì bên trong hàm Lambda, chúng tôi đang kiểm tra xem cả hai phần tử có bằng nhau hay không.
The map() function applies the given lambda function to each element of both the lists and stores the result to a new array. Which in our case will be a bool array because inside the lambda function we are checking if both the elements are equal or not.
Đầu ra:
True 1Hàm bản đồ () trả về một mảng bool mới, trong đó mỗi mục nhập ith trong mảng bool này biểu thị nếu First_list [i] bằng với Sec_List [i] hoặc không. Nếu tất cả các yếu tố trong mảng bool này là đúng thì điều đó có nghĩa là cả hai danh sách đều bằng nhau. Chúng ta có thể làm điều này bằng cách sử dụng hàm giảm (),
Hàm giảm (FUN, SEQ) chấp nhận một hàm và trình tự làm đối số. Nó trả về một giá trị duy nhất theo logic này,
- Đầu tiên, nó sẽ áp dụng hàm trên hai giá trị đầu tiên của chuỗi và lưu trữ kết quả là mới nhất_result.
- Sau đó, nó sẽ một lần nữa gọi hàm và vượt qua mới nhất_result cùng với mục tiếp theo trong chuỗi và lưu trữ kết quả là mới nhất_result.
- Nó sẽ lặp lại bước 2 cho đến khi tất cả các yếu tố trình tự được tiêu thụ.
Chúng ta có thể sử dụng hàm giảm () để kiểm tra xem danh sách bool có chứa tất cả các yếu tố thực hay không,
Đầu ra:
True 3Vì vậy, đây là cách chúng ta có thể kiểm tra xem hai danh sách có chính xác không.
Lặp lại trên hai danh sách song song để kiểm tra xem hai danh sách có bằng nhau không
Chúng tôi có thể lặp lại cả hai danh sách song song bằng cách sử dụng cho vòng lặp. Cho rằng chúng tôi sẽ zip cả hai đối tượng danh sách để tạo danh sách các bộ dữ liệu. Trong đó ith tuple trong danh sách các bộ dữ liệu này chứa phần tử ith của cả hai danh sách, tức là (list_1 [i], list_2 [i]). Sau đó, chúng ta có thể lặp lại danh sách các bộ dữ liệu này để kiểm tra xem cả hai phần tử trong mỗi tuple có bằng nhau hay không. Nếu mỗi tuple chứa các phần tử bằng nhau trong danh sách các bộ dữ liệu này thì điều đó có nghĩa là cả hai danh sách đều bằng nhau.ith element of both the lists i.e. (list_1[i], list_2[i]). Then we can iterate over this list of tuples to check if both the elements in each tuple are the equal or not. If each tuple contains equal elements in this list of tuples then it means both the lists are equal.
Chúng tôi đã tạo một chức năng riêng để thực hiện logic này,
Bây giờ, hãy để sử dụng chức năng này để kiểm tra xem cả hai danh sách có bằng hay không,
>>> l1 = [['a',1], ['b',2], ['c',3]] >>> l2 = [['b',2], ['c',3], ['a',1]] >>> print set(map(tuple,l1)) == set(map(tuple,l2)) True 1Đầu ra:
l1 = [['a',1], ['b',2], ['c',3]] l2 = [['b',2], ['c',3], ['a',1]] print sorted(l1) == sorted(l2) 7Đây là 8 cách khác nhau để kiểm tra xem hai danh sách có bằng hoặc không ở Python hay không.
Ví dụ hoàn chỉnh như sau,
Đầu ra:
>>> l1 = [['a',1], ['b',2], ['c',3]] >>> l2 = [['b',2], ['c',3], ['a',1]] >>> print set(map(tuple,l1)) == set(map(tuple,l2)) True 4