猿问

检查列表中的每个字符串(所有字符串)是否是另一个字符串中至少一个字符串的子字符串

我很难尝试检查 python 列表中的所有字符串是否都是另一个 Python 列表中任何字符串的子集。

示例:我想检查的每个字符串(所有字符串)list1是否至少在其中的一个字符串中list2,如果是,则执行某些操作。

list1 = ['tomato', 'onions','egg']
list2 = ['Two tomatos', 'two onions','two eggs','salsa']

例如在这个例子中它会返回True



四季花海
浏览 170回答 3
3回答

暮色呼如

您可以将生成器表达式与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

慕雪6442864

您可以使用列表理解、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)    

素胚勾勒不出你

如果满足列表 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)
随时随地看视频慕课网APP

相关分类

Python
我要回答