una tuplas sacar por palabra llenar listas lista elementos conjuntos comprensión buscar agregar python list enumerate

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])