列表理解:如果子字符串列表中不包含有效字符串,则检索有效字符串

2024-10-02 02:38:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要检查文件名列表是否可以被复制,并将其与fobidden子字符串列表进行比较。你知道吗

以下是我所拥有的:

exclude = ['ex','xe']
files = ['include', 'exclude']

这就是我所期望的:

['include']

我已经用列表理解了,比如:

[a[0] for a in [(f, any([e in f for e in exclude])) for f in files] if not a[1]]

在这里,我创建一个元组(f, any([e in f for e in exclude])),检查文件名与排除子字符串是否有对应关系。 我对文件列表for f in files中的每个文件都这样做,并且只包括排除子字符串if not a[1]中不存在的文件。你知道吗

有更好的方法吗?一个更像Python的? 因为我在文件列表中循环了两次,我猜有一种方法可以一次性完成!你知道吗

谢谢你!你知道吗


Tags: 文件方法字符串in列表forifinclude
2条回答

我不太明白你的逻辑。看起来您正在用布尔值构建元组,然后过滤出False值。你知道吗

在我看来,这也很有效,而且更简单:

exclude = ['ex','xe']
files = ['include', 'exclude']

print([x for x in files if not any(e in x for e in exclude)])

它循环遍历files,并检查每个文件中是否不包含exclude成员。你知道吗

请注意,您不必在any中构建实际的列表。省略方括号,让any执行一个延迟计算,它更快。你知道吗

这只会在文件列表中循环一次:

[file for file in files if not any(item in file for item in exclude)]

对于文件列表中的每个项,它都会在排除列表中循环一次,因此如果排除列表很长,性能可能会受到影响。你知道吗

相关问题 更多 >

    热门问题