我在执行此操作时遇到麻烦,我想执行一个执行此操作的功能:我有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
感谢您的回复。
答案 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)