目的是检查列表中是否有任何项目包含在另一个列表中,如果匹配,则以“ pythonic”方式将其分配给变量
if any('a','b','c') in ['b','x','y','z']:
#now i want to assign the matched 'b' to a variable concisely.
#In case of multiple matches , any match/ first match may be assigned
我想避免这种情况:
lst = ['b','x','y','z']
if 'a' in lst:
var = 'a'
elif 'b' in lst"
var = 'b'
# and so on
答案 0 :(得分:0)
如果找不到匹配的元素,则可以使用返回第一个匹配元素或None
的函数:
li_1 = ['a','b','c']
li_2 = ['b','x','y','z']
def find(li_1, li_2):
for e in li_1:
if e in li_2:
return e
print(find(li_1, li_2))
# b
print(find(['a'], ['b']))
# None
注意,这是一个O(n ^ 2)解决方案。如果项目是可哈希的,则可以使用集合交集获得O(1)解决方案(此外,您将获得 all 个匹配元素):
li_1 = ['a','b','c']
li_2 = ['b','x','y','z']
s1 = set(li_1)
s2 = set(li_2)
print(s1.intersection(s2)) # or print(s1 & s2)
# {'b'}