将列表中的匹配项分配给变量

时间:2019-05-18 00:04:22

标签: python-3.x

目的是检查列表中是否有任何项目包含在另一个列表中,如果匹配,则以“ 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

1 个答案:

答案 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'}