5459 Stimmen

Zugriff auf den Index in 'for'-Schleifen

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

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

20voto

Liam Punkte 5098

Sie können dies mit diesem Code tun:

ints = [8, 23, 45, 12, 78]
index = 0

for value in (ints):
    index +=1
    print index, value

Verwenden Sie diesen Code, wenn Sie den Indexwert am Ende der Schleife zurücksetzen müssen:

ints = [8, 23, 45, 12, 78]
index = 0

for value in (ints):
    index +=1
    print index, value
    if index >= len(ints)-1:
        index = 0

20voto

thinker007 Punkte 497

Nach dieser Diskussion: den Listenindex des Objekts

Iteration des Schleifenzählers

Das aktuelle Idiom für die Schleifenbildung über die Indizes verwendet die eingebaute range Funktion:

for i in range(len(sequence)):
    # Work with index i

Schleifen über Elemente und Indizes können entweder durch das alte Idiom oder durch die Verwendung des neuen zip eingebaute Funktion:

for i in range(len(sequence)):
    e = sequence[i]
    # Work with index i and element e

o

for i, e in zip(range(len(sequence)), sequence):
    # Work with index i and element e

über PEP 212 - Iteration des Schleifenzählers .

24 Stimmen

Dies funktioniert nicht bei der Iteration durch Generatoren. Verwenden Sie einfach enumerate().

2 Stimmen

Heutzutage ist das gängige Idiom enumerate, nicht der Bereichsaufruf.

0 Stimmen

Und es ist die gleiche wie die ältere Antwort: stackoverflow.com/a/522576/6451573

18voto

Ankur Kothari Punkte 681

Wenn ich eine Iteration durchführen würde nums = [1, 2, 3, 4, 5] Ich würde tun

for i, num in enumerate(nums, start=1):
    print(i, num)

Oder Sie erhalten die Länge als l = len(nums)

for i in range(l):
    print(i+1, nums[i])

18voto

DrM Punkte 2185

In Ihrer Frage schreiben Sie "Wie kann ich auf den Schleifenindex zugreifen, in diesem Fall von 1 bis 5?"

Der Index für eine Liste beginnt jedoch bei Null. Wir müssen also wissen, ob Sie tatsächlich den Index und das Element für jedes Element in einer Liste wollen, oder ob Sie wirklich Zahlen wollen, die bei 1 beginnen. Glücklicherweise ist es in Python einfach, entweder das eine oder das andere zu tun.

Erstens, zur Klarstellung, die enumerate Funktion gibt iterativ den Index und das entsprechende Element für jedes Element in einer Liste zurück.

alist = [1, 2, 3, 4, 5]

for n, a in enumerate(alist):
    print("%d %d" % (n, a))

Die Ausgabe für das obige Beispiel lautet dann,

0 1
1 2
2 3
3 4
4 5

Beachten Sie, dass der Index bei 0 beginnt. Diese Art der Indizierung ist in modernen Programmiersprachen wie Python und C üblich.

Wenn Sie möchten, dass sich Ihre Schleife über einen Teil der Liste erstreckt, können Sie die Standard-Python-Syntax für einen Teil der Liste verwenden. Um zum Beispiel eine Schleife vom zweiten Element einer Liste bis zum letzten Element, aber ohne dieses, zu erstellen, könnten Sie Folgendes verwenden

for n, a in enumerate(alist[1:-1]):
    print("%d %d" % (n, a))

Beachten Sie, dass auch hier der Ausgabeindex bei 0 beginnt,

0 2
1 3
2 4

Damit sind wir bei der start=n Schalter für enumerate() . Dadurch wird der Index einfach verschoben. Sie können auch einfach eine Zahl zum Index innerhalb der Schleife hinzufügen.

for n, a in enumerate(alist, start=1):
    print("%d %d" % (n, a))

für die die Ausgabe lautet

1 1
2 2
3 3
4 4
5 5

13voto

Sie können auch dies versuchen:

data = ['itemA.ABC', 'itemB.defg', 'itemC.drug', 'itemD.ashok']
x = []
for (i, item) in enumerate(data):
      a = (i, str(item).split('.'))
      x.append(a)
for index, value in x:
     print(index, value)

Die Ausgabe lautet

0 ['itemA', 'ABC']
1 ['itemB', 'defg']
2 ['itemC', 'drug']
3 ['itemD', 'ashok']

CodeJaeger.com

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.

Powered by:

X