簡體   English   中英

將列表中的匹配項分配給變量

[英]Assign matched item in list to a variable

動機是檢查列表中的任何項目是否包含在另一個列表中,如果匹配,則以“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

您可以使用返回第一個匹配元素的函數,或者在找不到匹配元素的情況下使用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)解決方案(作為獎勵,你將得到所有匹配的元素):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM