在Python中,如何在元组列表上枚举()?

在Python中,如何在元组列表上枚举()?,python,list,enumerate,Python,List,Enumerate,我有一些这样的代码: letters = [('a', 'A'), ('b', 'B')] i = 0 for (lowercase, uppercase) in letters: print "Letter #%d is %s/%s" % (i, lowercase, uppercase) i += 1 我被告知有一个enumerate()函数可以为我处理“I”变量: for i, l in enumerate(['a', 'b', 'c']): print "%d:

我有一些这样的代码:

letters = [('a', 'A'), ('b', 'B')]
i = 0
for (lowercase, uppercase) in letters:
    print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
    i += 1
我被告知有一个enumerate()函数可以为我处理“I”变量:

for i, l in enumerate(['a', 'b', 'c']):
    print "%d: %s" % (i, l)
但是,我不知道如何将两者结合起来:当所讨论的列表由元组组成时,如何使用enumerate?我必须这样做吗

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

枚举工具与itertools:在选择它们时,我们应该考虑什么?这叫什么?我想进一步了解这个语法。@Zak:如果你的意思是分配给
(小写,大写)
,它叫“解包”。整洁。我不知道解包语法可以嵌套。