Vielleicht wie (nur ein Pseudo-Code)Python: Wie bekomme ich die Listenlänge im Ausdruck des Listengenerators?
li = [1,2,3,4,5,6]
a = [d for d in li if self.length<3]
print a
[1,2]
Was für einen pythonic Weg ist, etwas zu tun?
Vielleicht wie (nur ein Pseudo-Code)Python: Wie bekomme ich die Listenlänge im Ausdruck des Listengenerators?
li = [1,2,3,4,5,6]
a = [d for d in li if self.length<3]
print a
[1,2]
Was für einen pythonic Weg ist, etwas zu tun?
Sie itertools.count()
verwenden können, um zu verfolgen, wie viele Elemente, die Sie verwendet haben:
from itertools import count
li = [1,2,3,4,5,6]
c = count(1) # initialize to 1
a = [d for d in li if next(c) < 3] # everytime you add an element
print (a) # in the comprehension `c` is incremented
, die auf der Liste hinzugefügt Spur der Elemente hält, damit die Länge der Liste, die gibt:
[1, 2]
wie mit einer Länge erwartet 2.
EDITED: einfacher Art und Weise, mit enumerate
:
a = [d for idx, d in enumerate(li) if idx < 2]
steuern Bitte verwenden Sie die 'next()' Funktion, anstatt die '__next__' Methode direkt aufzurufen. 'next (c)' ist in Python 2 und 3 sowohl lesbarer als auch portabler. –
Warum auch 'count()' verwenden, wenn Sie 'enumerate() 'verwenden können? Es besteht eine direkte Korrelation zwischen li und der Zählung. –
Vielen Dank für diesen Tipp, es ist mir wirklich nicht in den Sinn gekommen, "aufzuzählen" wirklich einfach und bevorzugte Art und Weise. –
Länge? Ich denke du meinst Wert? –
was ist 'selbst'? – ozgur
Sie können nicht auf die Liste verweisen, die in einem Listenverständnis generiert wird. Warum nicht einfach "a = li [: 2]"? –