2015-05-20 4 views
5

У меня есть список строк, некоторые из которых случаются не быть None:перебрать, не являющихся None элементов в Python

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) 

Я просто был интересен, если там было лучше. Я чувствую, что игнорирование Ничего не должно быть фундаментальным.

ответ

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

Вы можете отфильтровать Nones с простым списком понимания:

headers = [header for header in headers if header] 

Затем вызовите код:

for header in headers: 
    print(header) 
0

Вы можете избавиться от None элементов со списком понимания:

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

Вы можете использовать filter:

headers = filter(None, headers) 
+0

Спасибо! Я думаю, что это то, что я искал. – breeden

Смежные вопросы