2016-03-24 13 views
0

İki listeleri vardır değerlendirmek:Python liste anlama: listelerini

input_list = ['a','b'] 
existing_list = ['q','w','r'] 

buna existing_list eşit olmalıdır başka boş değilse input_list eşit olacaktır yeni bir liste oluşturmak istiyorum.

Bunu yapmanın en kolay yolu kullanmaktır düz if-else:

if input_list: 
    list_to_use = input_list 
else: 
    list_to_use = existing_list 

bir liste anlama veya daha özlü başka bir şekilde bunu yapmak mümkün mü?

list_to_use = [x if input_list else y for y in existing_list for x in input_list] 

ben alabilir yakın ['a', 'b', 'a', 'b', 'a', 'b'], bir yanlış sonuç üretir bu biriyle olduğunu.

+0

Kabul ettiğiniz için teşekkür ederim, ancak bunu sadece bir alternatif olarak yazdım. Cevapsız cevap ('veya' kullanır) kesin olarak kullanmanız gerekendir. – Lafexlos

+0

@Lafexlos, yapacağım. Sadece bir okuyucu için daha sezgisel gibi görünüyor. –

cevap

3

Diğer, ki (bunu yapmak için yolu olmalıdır) Kasramvd önerdiği, ayrıca ternary operator kullanabilirsiniz.

list_to_use = input_list if input_list else existing_list 
5

Liste anlama gereksiniminiz yok. Yani or operasyon yaptığı tam olarak budur: or daha

>>> input_list or existing_list 
['a', 'b'] 
>>> input_list = [] 
>>> 
>>> input_list or existing_list 
['q', 'w', 'r'] 
+2

"Bunu Basit ve Aptal Tutun" .. :) –