2013-06-21 39 views

Trả lời

17

Mmm, như thế này?

if list1 == list2: # compare lists for equality 
    doStuff()  # if lists are equal, do stuff after that 

Tất nhiên, bạn cần phải làm rõ ý nghĩa của "nếu giá trị danh sách khớp". Phần trên sẽ kiểm tra xem cả hai danh sách có cùng các phần tử hay không, ở cùng một vị trí - tức là, nếu chúng là bằng.

EDIT:

Câu hỏi đặt ra là không rõ ràng, chúng ta hãy xem một số giải thích càng tốt. Để kiểm tra xem tất cả các yếu tố trong list1 cũng trong list2 làm điều này:

if all(x in list2 for x in list1): 
    doStuff() 

Hoặc để làm điều gì đó với mỗi phần tử trong list1 đó cũng thuộc về list2, làm điều này:

for e in set(list1) & set(list2): 
    doStuff(e) 
+3

Không, trong Python, điều này sẽ kiểm tra xem cả hai danh sách có phải là _equal_: cùng một phần tử hay không, ở cùng một vị trí.Đó là trong Java, nơi này có nghĩa là một so sánh nhận dạng, trong Python nó là một so sánh bình đẳng –

+0

Cảm ơn bạn đã làm rõ rằng :) upvoted. –

+0

Actualu tôi muốn tìm xem mỗi phần tử trong danh sách 1 có trong danh sách 2 hay không nếu nó tồn tại sau đó làm điều gì đó với kết quả phù hợp – user2481309

1

Sử dụng any():

>>> L1 = [1,6] 
>>> L2 = [1] 
>>> any(i in L1 for i in L2) 
True 

Khá nhiều, nó vòng qua từng mục trong L2 và nếu bất kỳ mục trong L2 là trong L1, sau đó nó sẽ trở lại True .

Nếu bạn muốn xem liệu từng hạng mục nằm trong danh sách khác, và in mà những người và những người thân mà không phải là:

>>> for i in L2: 
...  if i in L1: 
...    print i, "is in L1" 
...  else: 
...    doStuff(i) 
+2

Điều đó sẽ bỏ qua o rder của danh sách. –

+0

@MarkusUnterwaditzer Thứ tự phải làm gì với nó? – TerryA

+1

nó sẽ nói rằng '' [1,2,3] '' và '' [3,2,1] '' là bằng nhau. –

0

phương pháp đơn giản, mặc dù không nhất thiết phải hiệu quả nhất (sử dụng all() thay vì any()):

listsEqual = len(list1) == len(list2) and all(list1[i] == list2[i] for i in range(len(list1)) 
Các vấn đề liên quan