python在列表理解中评估bool

时间:2014-11-05 18:46:21

标签: python list boolean list-comprehension

我可以在列表理解中评估一个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'
]

2 个答案:

答案 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')]