Wie kann ich auf den Index in einer for
Schleife?
xs = [8, 23, 45]
for x in xs:
print("item #{} = {}".format(index, x))
Gewünschter Output:
item #1 = 8
item #2 = 23
item #3 = 45
Wie kann ich auf den Index in einer for
Schleife?
xs = [8, 23, 45]
for x in xs:
print("item #{} = {}".format(index, x))
Gewünschter Output:
item #1 = 8
item #2 = 23
item #3 = 45
Wie in Python üblich, gibt es mehrere Möglichkeiten, dies zu tun. In allen Beispielen wird angenommen: lst = [1, 2, 3, 4, 5]
for index, element in enumerate(lst):
# do the things that need doing here
Dies ist meiner Meinung nach auch die sicherste Option, da die Möglichkeit einer unendlichen Rekursion ausgeschlossen ist. Sowohl das Element als auch sein Index werden in Variablen gehalten, und es besteht keine Notwendigkeit, weiteren Code zu schreiben um auf das Element zuzugreifen.
for
)for index in range(len(lst)): # or xrange
# you will have to write extra code to get the element
while
)index = 0
while index < len(lst):
# you will have to write extra code to get the element
index += 1 # escape infinite recursion
Wie bereits erwähnt, gibt es noch andere Möglichkeiten, die hier nicht erläutert wurden und die in anderen Situationen vielleicht sogar besser geeignet sind. z.B. mit itertools.chain
mit für. Es behandelt verschachtelte Schleifen besser als die anderen Beispiele.
Auf altmodische Weise:
for ix in range(len(ints)):
print(ints[ix])
Verständnis der Liste:
[ (ix, ints[ix]) for ix in range(len(ints))]
>>> ints
[1, 2, 3, 4, 5]
>>> for ix in range(len(ints)): print ints[ix]
...
1
2
3
4
5
>>> [ (ix, ints[ix]) for ix in range(len(ints))]
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]
>>> lc = [ (ix, ints[ix]) for ix in range(len(ints))]
>>> for tup in lc:
... print(tup)
...
(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 5)
>>>
Dies ist no falsch und wird in C/C++ und anderen Programmen verwendet. Es wird als nicht-pythonisch betrachtet, kann aber auch in Python verwendet werden. Wie einfache Lösungen, die es auf die Quelle herunterbrechen :+
Etwas Python Extremisten würde sagen, tu das nicht. Aber ich habe das nur gesagt, um darauf hinzuweisen, dass es mehr als einen möglichen Weg gibt
Der schnellste Weg zum Zugriff auf die Indizes der Liste innerhalb der Schleife in Python 3.7 ist die Verwendung des Aufzählungsmethode für kleine, mittlere und große Listen.
Siehe bitte verschiedene Ansätze die verwendet werden kann, um über die Liste zu iterieren und auf den Indexwert zuzugreifen und ihre Leistungskennzahlen (was vermutlich für Sie nützlich wäre) in den nachstehenden Codebeispielen:
# Using range
def range_loop(iterable):
for i in range(len(iterable)):
1 + iterable[i]
# Using enumerate
def enumerate_loop(iterable):
for i, val in enumerate(iterable):
1 + val
# Manual indexing
def manual_indexing_loop(iterable):
index = 0
for item in iterable:
1 + item
index += 1
Siehe Leistungskennzahlen für jede Methode unten:
from timeit import timeit
def measure(l, number=10000):
print("Measure speed for list with %d items" % len(l))
print("range: ", timeit(lambda :range_loop(l), number=number))
print("enumerate: ", timeit(lambda :enumerate_loop(l), number=number))
print("manual_indexing: ", timeit(lambda :manual_indexing_loop(l), number=number))
# Measure speed for list with 1000 items
measure(range(1000))
# range: 1.161622366
# enumerate: 0.5661940879999996
# manual_indexing: 0.610455682
# Measure speed for list with 100000 items
measure(range(10000))
# range: 11.794482958
# enumerate: 6.197628574000001
# manual_indexing: 6.935181098000001
# Measure speed for list with 10000000 items
measure(range(10000000), number=100)
# range: 121.416859069
# enumerate: 62.718909123
# manual_indexing: 69.59575057400002
Das Ergebnis ist, dass die Verwendung von enumerate
Methode ist die schnellste Methode zur Iteration, wenn der Index benötigt wird.
Nachfolgend finden Sie einige nützliche Links:
"Die Lesbarkeit zählt" Der Geschwindigkeitsunterschied im kleinen <1000-Bereich ist unbedeutend. Er ist 3 % langsamer bei einer bereits geringen Zeitmetrik.
Zunächst einmal werden die Indizes von 0 bis 4 sein. Programmiersprachen beginnen mit der Zählung bei 0; vergessen Sie das nicht, sonst werden Sie eine Ausnahme wegen Indexüberschreitung bekommen. Alles, was Sie in der for-Schleife brauchen, ist eine Variable, die von 0 bis 4 zählt, etwa so:
for x in range(0, 5):
Beachten Sie, dass ich 0 bis 5 geschrieben habe, weil die Schleife eine Zahl vor dem Maximum aufhört :)
Um den Wert eines Indexes zu erhalten, verwenden Sie
list[index]
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
112 Stimmen
Beachten Sie, dass Indizes in Python bei 0 beginnen, so dass die Indizes für Ihre Beispielliste 0 bis 4 und nicht 1 bis 5 sind