2015-03-21 6 views
7

Sto scrivendo una lista di comprensione in Python:Come posso aggiungere nulla alla lista nella comprensione della lista?

[2 * x if x > 2 else add_nothing_to_list for x in some_list] 

Ho bisogno la parte "add_nothing_to_list" (la parte altra della logica) di essere letteralmente nulla.

Python ha un modo per farlo? In particolare, c'è un modo per dire a.append(nothing) che lascerebbe lo a invariato. Questa può essere una caratteristica utile per scrivere codice generalizzato.

risposta

10

Basta muovere la condizione per l'ultimo

[2 * x for x in some_list if x > 2] 

Citando il List Comprehension documentation,

Un elenco di comprensione si compone di tasselli che contengono l'espressione seguita da una clausola di for, quindi zero o più for o if clausole. Il risultato sarà una nuova lista risultante dalla valutazione dell'espressione nel contesto delle clausole for e if che la seguono.

In questo caso, l'espressione è 2 * x e poi un for dichiarazione, for x in some_list, seguito da un if dichiarazione, if x > 2.

Questa comprensione può essere inteso, in questo modo

result = [] 
for x in some_list: 
    if x > 2: 
     result.append(x)