3 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以將生成器表達(dá)式與any/all函數(shù)結(jié)合使用:
>>> list1 = ['tomato', 'onions','egg']
>>> list2 = ['Two tomatos', 'two onions','two eggs','salsa']
>>> all(any(i in j for j in list2) for i in list1)
True

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以使用列表理解、any和來處理單個(gè)命令all。
list1 = ['tomato', 'onions','egg']
list2 = ['Two tomatos', 'two onions','two eggs','salsa']
result = all([any([keyword in string for string in list2]) for keyword in list1])
第一個(gè)列表推導(dǎo)[keyword in string for string in list2]式檢查關(guān)鍵字是否至少存在于所有字符串中l(wèi)ist2并生成一個(gè)布爾值列表。我們使用 any 來確定是否有任何結(jié)果是True。
第二個(gè)列表理解建立在第一個(gè)列表理解之上,[any([keyword in string for string in list2]) for keyword in list1]并檢查所有關(guān)鍵字是否在所有字符串中最少出現(xiàn)list2。我們all用來檢查所有結(jié)果是否都是True.
正如@Selcuk 提到的,您可以使用生成器表達(dá)式更有效地做到這一點(diǎn):語法真的非常接近列表理解:
result = all(any(keyword in string for string in list2) for keyword in list1)

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果滿足列表 1 中的單詞存在于列表 2 的某些元素中的條件,您可以遍歷列表并執(zhí)行某些操作,例如:
list1 = ['tomato', 'onions','egg']
list2 = ['Two tomatos', 'two onions','two eggs','salsa']
for i in list1:
for j in list2:
if i in j:
print("something to ", i, " and ", j)
添加回答
舉報(bào)