Wie kann ich () über eine Liste von Tupeln in Python aufzählen?
Frage
Ich habe einige Code wie folgt bekommen:
letters = [('a', 'A'), ('b', 'B')]
i = 0
for (lowercase, uppercase) in letters:
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
i += 1
Ich habe gesagt, dass es eine enumerate () Funktion, die Pflege der „i“ Variable für mich nehmen kann:
for i, l in enumerate(['a', 'b', 'c']):
print "%d: %s" % (i, l)
Aber ich kann nicht herausfinden, wie die beiden kombinieren: Wie verwende ich aufzählen, wenn die Liste in Frage von Tupeln hergestellt wird? Muss ich dies tun?
letters = [('a', 'A'), ('b', 'B')]
for i, tuple in enumerate(letters):
(lowercase, uppercase) = tuple
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
Oder gibt es eine elegantere Möglichkeit?
Lösung
Dies ist eine nette Art und Weise, es zu tun:
letters = [('a', 'A'), ('b', 'B')]
for i, (lowercase, uppercase) in enumerate(letters):
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
Andere Tipps
Dies ist, wie ich es tun würde:
import itertools
letters = [('a', 'A'), ('b', 'B')]
for i, lower, upper in zip(itertools.count(),*zip(*letters)):
print "Letter #%d is %s/%s" % (i, lower, upper)
EDIT: auspacken wird überflüssig. Dies ist ein kompakter Art und Weise, die auf Ihrem Anwendungsfall könnte funktionieren oder nicht abhängig:
import itertools
letters = [('a', 'A'), ('b', 'B')]
for i in zip(itertools.count(),*zip(*letters)):
print "Letter #%d is %s/%s" % i
Sie können auf diese Weise auch tun:
letters = [('a', 'A'), ('b', 'B')]
for i, letter in enumerate(letters):
print "Letter #%d is %s/%s" % (i, letter[0], letter[1])
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow