2017-02-27 4 views
0

Wie können Sie mehrere Wenns verschachteln, während Sie Listenverständnis haben?Python verschachtelt wenn Anweisungen mit Listenverstehen

Ich habe diese Funktion:

@click.command 
@click.option(--a) 
@click.option(--b) 
def func1(a,b): 
    for x in list1: 
    if any([a, b]): 
     if any(x==a, x==b]): 
     print ('x') 
    else: 
     print ('x') 

Wie Sie Beispielfunktion nimmt optionale Parameter zu sehen. Wenn also a oder b an func1 übergeben wird, wird nur x gedruckt, das mit a oder b übereinstimmt. Wenn keine Parameter übergeben werden, werden alle Elemente von list1 gedruckt.

Wie kann ich das mit Listenverständnis mit verschachtelten if else-Anweisungen tun?

Irgendwelche Hilfe?

Dank

+1

Die Liste Klammern in 'falls vorhanden (...' nicht übereinstimmen .. –

+0

Es wird auch 'x'', nicht' x' gedruckt ... –

+4

Nicht das beste Beispiel, wenn es nur darum geht, einige Ergebnisse auszudrucken, dann würde ich ** das ** nicht mit dem Listenverständnis mischen. – Elmex80s

Antwort

0

Ich glaube nicht, dass Sie beispielsweise die gut ist, in dem Sie multiple ifs innerhalb list comprehension verwenden können.

Andernfalls können Sie in diesem Beispiel sehen und ändern Sie Ihre Bedürfnisse zu füllen:

Ich nehme an, ich habe ein list of listsa wie diese genannt:

a = [[1, 2, 0], [5, 6, 0], [0, 3, 5]] 

Und möchte ich finden, wenn jedes Element jeder Unterliste ist odd, even oder zero dann eine andere Liste von Listen mit den neuen Informationen über meine Standardliste von Listen zurückgeben.

Also, mit list comprehension und multiple ifs, ich kann etwas tun:

final = [["odd" if (k %2 != 0 and k != 0) else "even" if (k%2 == 0 and k!=0) else "zero" for k in j] for j in a ] 

print(final) 

Ausgang:

>>> [['odd', 'even', 'zero'], ['odd', 'even', 'zero'], ['zero', 'odd', 'odd']] 
Verwandte Themen