sacar - ¿Cómo enumero() sobre una lista de tuplas en Python?
llenar una lista en python (3)
Tengo un código como este:
letters = [(''a'', ''A''), (''b'', ''B'')]
i = 0
for (lowercase, uppercase) in letters:
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
i += 1
Me han dicho que hay una función enumerate () que puede ocuparse de la variable "i":
for i, l in enumerate([''a'', ''b'', ''c'']):
print "%d: %s" % (i, l)
Sin embargo, no puedo entender cómo combinar los dos: ¿cómo uso enumerate cuando la lista en cuestión está hecha de tuplas? ¿Tengo que hacer esto?
letters = [(''a'', ''A''), (''b'', ''B'')]
for i, tuple in enumerate(letters):
(lowercase, uppercase) = tuple
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
¿O hay una manera más elegante?
Así es como lo haría:
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)
EDITAR: el desembalaje se vuelve redundante. Esta es una forma más compacta, que podría funcionar o no según su caso de uso:
import itertools
letters = [(''a'', ''A''), (''b'', ''B'')]
for i in zip(itertools.count(),*zip(*letters)):
print "Letter #%d is %s/%s" % i
Esta es una buena manera de hacerlo:
letters = [(''a'', ''A''), (''b'', ''B'')]
for i, (lowercase, uppercase) in enumerate(letters):
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
Puedes hacer esto también:
letters = [(''a'', ''A''), (''b'', ''B'')]
for i, letter in enumerate(letters):
print "Letter #%d is %s/%s" % (i, letter[0], letter[1])