在Python中的2个列表中查找第一个匹配项

时间:2019-10-28 14:34:59

标签: python

我在执行此操作时遇到麻烦,我想执行一个执行此操作的功能:我有2个列表:list1 = [8,6,0] and list2 = [6,0]。我想保持第一个值在两个列表之间相同(此处为6个)。就像我有list1 = [a,b,c]和list2 = [b,c]一样。我只想保留值b。 我已经尝试过了:

def listFirstValue (list1,list2) :
for x in list1 :  
  for y in list2 :
    if x == y :
      break
  break
return a

感谢您的回复。

2 个答案:

答案 0 :(得分:3)

我将使用next通过生成器理解来检索list1中包含的list2中的第一个元素:

list1 = [8,6,0] 
list2 = set([6,0])

next(i for i in list1 if i in list2)
# 6

更安全一些,可以避免在list1中不包含任何元素的情况下发生错误:

next((i for i in list1 if i in list2), None)

答案 1 :(得分:0)

如果list2中的项目是可哈希的,则最好先创建一个对应的集合,以加快查找速度(该集合具有O(1)成员资格测试):

lookup = set(list2)
next(x for x in list1 if x in lookup)