J'ai du code comme celui-ci:
letters = [('a', 'A'), ('b', 'B')]
i = 0
for (lowercase, uppercase) in letters:
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
i += 1
On m'a dit qu'il y a une fonction énumérée () qui peut prendre soin de la variable "i" pour moi:
for i, l in enumerate(['a', 'b', 'c']):
print "%d: %s" % (i, l)
Cependant, je ne peux pas comprendre comment combiner les deux: comment puis-je utiliser énumérer lorsque la liste en question est faite de tuples? Dois-je faire ça?
letters = [('a', 'A'), ('b', 'B')]
for i, Tuple in enumerate(letters):
(lowercase, uppercase) = Tuple
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
Ou y a-t-il un moyen plus élégant?
Ceci est une solution soignée de le faire:
letters = [('a', 'A'), ('b', 'B')]
for i, (lowercase, uppercase) in enumerate(letters):
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
C'est comme ça que je le ferais:
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: Le déballage devient redondant. Ceci est une manière plus compacte, qui pourrait fonctionner ou non en fonction de votre cas d'utilisation:
import itertools
letters = [('a', 'A'), ('b', 'B')]
for i in Zip(itertools.count(),*Zip(*letters)):
print "Letter #%d is %s/%s" % i
Vous pouvez faire cela aussi:
letters = [('a', 'A'), ('b', 'B')]
for i, letter in enumerate(letters):
print "Letter #%d is %s/%s" % (i, letter[0], letter[1])