我可以在列表理解中评估一个bool吗?
我想创建一个不包含以'.zip'
结尾的项目的列表:
outlist = [x for x in os.listdir(path) if x *DOES NOT* end with '.zip']
我使用列表理解完全相反:
outlist2 = [x for x in os.listdir(path) if x.endswith('.zip')]
这是我的名单
os.listdir(path):
[
'sample1.zip', 'sample2.zip', 'sample3.zip', 'sample4.zip',
'sample1.txt', 'sample2.pdf', 'sample3.csv', 'sample4.xlsx'
]
答案 0 :(得分:0)
只需添加not
:
outlist2 = [x for x in os.listdir(path) if not x.endswith('.zip')]
if
表达式可以是任何有效的Python表达式,包括使用布尔运算符的表达式。
演示:
>>> sample = ['sample1.zip', 'sample2.zip', 'sample3.zip', 'sample4.zip',
... 'sample1.txt', 'sample2.pdf', 'sample3.csv', 'sample4.xlsx']
>>> [x for x in sample if not x.endswith('.zip')]
['sample1.txt', 'sample2.pdf', 'sample3.csv', 'sample4.xlsx']
答案 1 :(得分:0)
当然可以 - 只需在那里拍一个not
运算符:
outlist2 = [x for x in os.listdir(path) if not x.endswith('.zip')]