如何解决嵌套列表理解理解以比较python中的字符串
我有两个列表
l1 = ["filea","fileb","filec"]
l2 = ["a","b"]
我想生成一个包含l1元素的结果列表l3
,其中l1元素包含l2元素。所以最后我想拥有
l3 = ["filea","fileb"]
我只是不知道如何使用列表推导... 我尝试过:
l3 = [x for x in l1 for y in l2 if y in x]
它有效...
我只想了解这里实际发生的情况以及发生的顺序。对于任何帮助,我将非常感谢!
解决方法
可以这样写:
l3 = []
for x in l1:
for y in l2:
if y in x:
l3.append(x)
,
您可以简单地循环所有列表,并检查l2
元素中是否有l1
中的元素
示例
l1 = ["filea","fileb","filec"]
l2 = ["a","b"]
l3 = list({x for x in l1 for y in l2 if x[-1] in l2})
# Or
l3 = [x for x in l1 for y in l2 if y in x]
print(l3)
列表理解明细
您刚刚遍历了l1
和l2
,因为在python中,您可以像在列表上一样对字符串进行索引,还可以检查整个字符串中是否出现一个字符,所以您也可以这样做if y in x
,您检查字符y
是否出现在字符串x
l3 = []
for x in l1:
for y in l2:
if y in x:
l3.append(x)
输出
['filea','fileb']
,
撰写时:
l3 = [x for x in l1 for y in l2 if y in x]
等于以下内容:
l3 = []
for x in l1: # loop through each element in the list l1
for y in l2: # loop through each element in the list l2
if y in x: # if x contains y
l3.append(x)
,
你可以做
{$tweet->id}
一种更有效的解决方案是使用正则表达式:
l3 = [s for s in l1 if any(c in s for c in l2)]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。