我正在尝试遍历目录中的所有文件,并对具有特定文件名的文件执行某些操作。出于某种原因,当我使用列表理解时,if语句不起作用,所有迭代似乎都进入if语句:
for filename in os.listdir(somepath):
if (str(i_test) in filename for i_test in range(15,20)):
do something
如果我在if语句中显式地写下数字,if语句将按预期工作:
for filename in os.listdir(somepath):
if '15' in filename or ('16' in filename) or ('17' in filename) or ('18' in filename) or ('19' in filename):
do something
我找不出我在名单上的什么地方搞砸了
您可以使用
re
首先,一个小问题,但这不是一个列表理解;这是一个生成器表达式。这里的差别不是很大,但它们是不同的。列表理解被包装在
[]
中,而生成器表达式使用()
(就像这里一样)第二,你基本上有:
问题是生成器表达式本身永远不会为false(与列表理解的结果不同),因此条件始终为true
您想使用^{} 来表示“如果任何测试都是真的”:
相关问题 更多 >
编程相关推荐