1291 Stimmen

Wie kann man durch zwei Listen parallel iterieren?

Ich habe zwei Iterables in Python, und ich möchte sie paarweise durchgehen:

foo = (1, 2, 3)
bar = (4, 5, 6)

for (f, b) in some_iterator(foo, bar):
    print("f: ", f, "; b: ", b)

Das Ergebnis sollte sein:

f: 1; b: 4
f: 2; b: 5
f: 3; b: 6

Eine ist es, über die Indizes zu iterieren:

for i in range(len(foo)):
    print("f: ", foo[i], "; b: ", bar[i])

Aber das erscheint mir etwas unpythonisch. Gibt es einen besseren Weg, dies zu tun?

5voto

Don F Punkte 111

Sie können die n-ten Elemente mit comprehension zu einem Tupel oder einer Liste bündeln und sie dann mit einer Generatorfunktion ausgeben.

def iterate_multi(*lists):
    for i in range(min(map(len,lists))):
        yield tuple(l[i] for l in lists)

for l1, l2, l3 in iterate_multi([1,2,3],[4,5,6],[7,8,9]):
    print(str(l1)+","+str(l2)+","+str(l3))

2voto

SuperNova Punkte 20412

Warum können wir nicht einfach den Index verwenden, um zu iterieren?

foo = ['a', 'b', 'c']
bar = [10, 20, 30]
for indx, itm in enumerate(foo):
    print (foo[indx], bar[indx])

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