3 回答

TA贡献1853条经验 获得超9个赞
您可以将生成器表达式与any/all函数结合使用:
>>> 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贡献1812条经验 获得超5个赞
您可以使用列表理解、any和来处理单个命令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])
第一个列表推导[keyword in string for string in list2]式检查关键字是否至少存在于所有字符串中list2并生成一个布尔值列表。我们使用 any 来确定是否有任何结果是True。
第二个列表理解建立在第一个列表理解之上,[any([keyword in string for string in list2]) for keyword in list1]并检查所有关键字是否在所有字符串中最少出现list2。我们all用来检查所有结果是否都是True.
正如@Selcuk 提到的,您可以使用生成器表达式更有效地做到这一点:语法真的非常接近列表理解:
result = all(any(keyword in string for string in list2) for keyword in list1)

TA贡献1827条经验 获得超9个赞
如果满足列表 1 中的单词存在于列表 2 的某些元素中的条件,您可以遍历列表并执行某些操作,例如:
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)
添加回答
举报