我想取两个列表,并找出出现在这两个列表中的值。

a = [1, 2, 3, 4, 5]
b = [9, 8, 7, 6, 5]

returnMatches(a, b)

例如,将返回[5]。


当前回答

您也可以尝试这样做,将公共元素保存在一个新列表中。

new_list = []
for element in a:
    if element in b:
        new_list.append(element)

其他回答

另一种更实用的方法是检查列表1 (lst1)和列表2 (lst2)是否相等,其中对象的深度为1,并保持顺序:

all(i == j for i, j in zip(lst1, lst2))   

这不是最有效的方法,但到目前为止最明显的方法是:

>>> a = [1, 2, 3, 4, 5]
>>> b = [9, 8, 7, 6, 5]
>>> set(a) & set(b)
{5}

如果顺序很重要,你可以用这样的列表推导式来做:

>>> [i for i, j in zip(a, b) if i == j]
[5]

(仅适用于同等大小的列表,这意味着顺序重要性)。

a = [1, 2, 3, 4, 5]
b = [9, 8, 7, 6, 5]

lista =set(a)
listb =set(b)   
print listb.intersection(lista)   
returnMatches = set(['5']) #output 

print " ".join(str(return) for return in returnMatches ) # remove the set()   

 5        #final output 

我更喜欢基于集合的答案,但这里有一个不管怎样都有用的答案

[x for x in a if x in b]

最简单的方法是使用set:

>>> a = [1, 2, 3, 4, 5]
>>> b = [9, 8, 7, 6, 5]
>>> set(a) & set(b)
set([5])