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

2024-09-30 05:18:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难做到这一点,我想做一个函数来做到这一点:我有两个列表: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

谢谢你的回复。你知道吗


Tags: and函数in列表forreturnifdef
2条回答

我将使用生成器理解来执行此操作,使用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)

如果list2中的项是可散列的,那么最好先创建一个相应的集合,以便更快地查找(集合具有O(1)成员身份测试):

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

相关问题 更多 >

    热门问题