【问题标题】:python evaluate bool within a list comprehensionpython在列表理解中评估bool
【发布时间】:2015-01-02 02:10:02
【问题描述】:

我可以在列表推导中计算布尔值吗?

我想创建一个不包含以'.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'
]

【问题讨论】:

    标签: python list boolean list-comprehension


    【解决方案1】:

    当然可以 - 只需在其中打一个 not 运算符:

    outlist2 = [x for x in os.listdir(path) if not x.endswith('.zip')]
    

    【讨论】:

      【解决方案2】:

      只需添加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']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多