[英]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.