2015-03-21 17 views
7

Python içinde bir liste anlama yazıyorum: Liste anlamada listeye hiçbir şeyi nasıl ekleyebilirim?

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

ben "add_nothing_to_list" bölümünü (mantık başka parçası) tam anlamıyla hiçbir şey olması gerekir.

Python'un bunu yapmanın bir yolu var mı? Özellikle, a'u değişmeden bırakacak olan a.append(nothing) deme yolu vardır. Bu genelleştirilmiş kod yazmak için kullanışlı bir özellik olabilir.

cevap

10

sadece

bir liste kavrama daha sonra, sıfır ya da daha fazla for veya for madde içerecektir bir ifade içeren parantez oluşur List Comprehension documentation teklif son

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

koşulu hareket if maddeleri. Sonuç, ifadenin, onu takip eden for ve if koşullarında değerlendirilmesinden kaynaklanan yeni bir liste olacaktır. Bu durumda

, ifade 2 * x ve daha sonra bir bir if açıklamada, if x > 2 ardından for açıklamada, for x in some_list.

Bu anlama bu

result = [] 
for x in some_list: 
    if x > 2: 
     result.append(x) 
gibi anlaşılabilir
İlgili konular