2013-06-21 130 views

回答

17

嗯,是這樣?

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

當然,您需要說明「if lists values match」是什麼意思。上面將檢查兩個列表是否具有相同的元素,在相同的位置 - 也就是說,如果它們是等於

編輯:

的問題是不明確的,讓我們看到一些可能的解釋。要檢查是否在list1所有元素也是list2做到這一點:

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

或者做某件事與list1每個元素也屬於在list2,這樣做:

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

否,在Python中,這將檢查這兩個列表是否位於相同位置的_equal_:相同元素。這是在Java中,這意味着一個身份比較,在Python中它是一個相等的比較 –

+0

感謝澄清:) upvoted。 –

+0

Actualu我想查找列表1中的每個元素是否存在於列表2中,如果它存在,則使用匹配做一些事情 – user2481309

1

使用any()

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

好看多了,它遍歷每個項目L2,如果在L2任何產品在L1,那麼它將返回True

如果你想查看每個項目是否在其他列表,以及打印哪些是,哪些不是:

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

那會忽略o列表的名單。 –

+0

@MarkusUnterwaditzer命令與它有什麼關係? – TerryA

+1

它會說''[1,2,3]''和''[3,2,1]''是相等的。 –

0

簡單的方法,雖然不一定是最有效的(使用all()代替any()):

listsEqual = len(list1) == len(list2) and all(list1[i] == list2[i] for i in range(len(list1))