2017-02-25 3 views
1

Ich möchte nur fragen, ob es möglich ist, diesen Code in ein Listenverständnis mit takewhile() umzuwandeln? Ich benutze Python2.7.Rückwärtszählung in takewhile()? Python2.7

Ich habe diesen Code:

n=4 
c=[] 
while n!=0: 
    c.append(n) 
    n-=1 
print c 

Die Ausgabe lautet:

[4,3,2,1] 

Ich wollte den Code in eine Liste Verständnis mit Takewhile()

Ich habe versucht, diese zu transformieren, aber keine glück:

from itertools import takewhile 
n=4 
c=[n for n in takewhile(lambda n: n!=0, xrange(n))] 
print c 

Sad der Ausgang war eine leere Liste zu sagen:

[] 

Ich denke, die Ursache war, dass der Wert auf xrange (n) mit 0 beginnt, das ist, warum es nicht meine gewünschte Ausgabe geben.

Gibt es eine Möglichkeit den Iterator in Takewhile zu umkehren (wie: beginnt von 4 auf 1 statt 0 bis 3 zu zählen?)

Können Sie mir einen Rat geben für diese Art von Dilemma? Ich würde es schätzen. Lassen Sie mich wissen, ob diese Frage ein Duplikat hat.

Antwort

1

Xrange kann als xrange(1, n+1) aufgerufen werden, um die gewünschte Liste zu erhalten. Sie können es auch als xrange (n, 1, -1) aufrufen, um die umgekehrte Liste direkt zu erhalten.

+0

Vielen Dank Horia Coman .. :-) –