我有一些这样的代码:

letters = [('a', 'A'), ('b', 'B')]
i = 0
for (lowercase, uppercase) in letters:
    print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
    i += 1

有人告诉我,有是一个可以照顾的“i”变量对我来说是枚举()函数:

for i, l in enumerate(['a', 'b', 'c']):
    print "%d: %s" % (i, l)

不过,我无法弄清楚如何将二者结合起来:我如何使用时有问题的列表是由元组的枚举?我必须这样做?

letters = [('a', 'A'), ('b', 'B')]
for i, tuple in enumerate(letters):
    (lowercase, uppercase) = tuple
    print "Letter #%d is %s/%s" % (i, lowercase, uppercase)

或者是有一个更优雅的方式?

有帮助吗?

解决方案

这是一种巧妙的方法做到这一点:

letters = [('a', 'A'), ('b', 'B')]
for i, (lowercase, uppercase) in enumerate(letters):
    print "Letter #%d is %s/%s" % (i, lowercase, uppercase)

其他提示

这是我怎么会做它:

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)

编辑:拆包变得多余。这是一个更紧凑的方式,这可能会奏效与否取决于你的使用情况:

import itertools

letters = [('a', 'A'), ('b', 'B')]
for i in zip(itertools.count(),*zip(*letters)):
    print "Letter #%d is %s/%s" % i

您可以这样做太:

letters = [('a', 'A'), ('b', 'B')]
for i, letter in enumerate(letters):
    print "Letter #%d is %s/%s" % (i, letter[0], letter[1])
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top