迭代Python

时间:2015-05-20 05:24:35

标签: python

我有一个字符串列表,其中一些恰好是None:

headers = ['Name', None, 'HW1', 'HW2', None, 'HW4', 'EX1', None, None]

现在我想迭代这个列表,但跳过None条目。例如,这样的事情会很好:

for header in headers if header: print(header)

但这不起作用。有两种方法可以让它工作,但我不喜欢这两种方法:

for header in (item for item in headers if item): print(header)

for header in headers:
    if header: print(header)

我很好奇是否有更好的方法。我觉得无视无。应该是非常基础的。

4 个答案:

答案 0 :(得分:10)

headers = ['Name', None, 'HW1', 'HW2', None, 'HW4', 'EX1', None, None]
for header in filter(None, headers):
    print header

答案 1 :(得分:4)

您可以使用filter

headers = filter(None, headers)

答案 2 :(得分:2)

你可以通过列表理解来删除None项:

headers = [item for item in headers if item is not None]
for item in header:
    print item

答案 3 :(得分:0)

您可以使用简单的列表理解过滤掉Nones

headers = [header for header in headers if header]

然后拨打您的密码:

for header in headers:
    print(header)