Betrachten Sie den folgenden Python-Code, mit dem ich list2
alle Elemente mit Indizes von 1 bis 3 von neu hinzufüge list1
:
for ind, obj in enumerate(list1):
if 4 > ind > 0:
list2.append(obj)
Wie würden Sie dies mit Listenverständnis schreiben, wenn ich durch Aufzählung keinen Zugriff auf die Indizes hätte?
etwas wie:
list2 = [x for x in list1 if 4 > ind > 0]
aber da ich keine ind
Nummer habe, würde das funktionieren?
list2 = [x for x in enumerate(list1) if 4 > ind > 0]
python
list
indexing
list-comprehension
Pav Ametvic
quelle
quelle
list1[1:4]
hier[x for x in list1[1:4]]
?list2 = list1[1:4]
Antworten:
quelle
Wenn Sie
enumerate
, Sie tun Zugriff auf den Index haben:quelle
Sofern Ihr tatsächlicher Anwendungsfall nicht komplizierter ist, sollten Sie nur ein Listen-Slice verwenden, wie von @wim vorgeschlagen
In komplizierteren Fällen - wenn Sie den Index nicht wirklich benötigen - ist es klarer, über ein Slice oder eine Islice zu iterieren
oder
Für kleine Scheiben ist das einfach
list1[1:4]
. Wenn die Slices ziemlich groß werden können, ist es möglicherweise besser, eine Islice zu verwenden, um ein Kopieren des Speichers zu vermeidenquelle