为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

四季花海 2022-11-18 20:51:22
我很难尝试检查 python 列表中的所有字符串是否都是另一个 Python 列表中任何字符串的子集。示例:我想检查的每个字符串(所有字符串)list1是否至少在其中的一个字符串中list2,如果是,则执行某些操作。list1 = ['tomato', 'onions','egg'] list2 = ['Two tomatos', 'two onions','two eggs','salsa']例如在这个例子中它会返回True。
查看完整描述

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


查看完整回答
反对 回复 2022-11-18
?
慕雪6442864

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)    


查看完整回答
反对 回复 2022-11-18
?
素胚勾勒不出你

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)


查看完整回答
反对 回复 2022-11-18
  • 3 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号