我有一些这样的代码:
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)
但是,我无法弄清楚如何将两者结合起来:当有问题的列表是由元组组成时,如何使用枚举?我必须这样做吗?
letters = [('a', 'A'), ('b', 'B')]
for i, tuple in enumerate(letters):
(lowercase, uppercase) = tuple
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
或者有更优雅的方式吗?
答案 0 :(得分:90)
这是一种巧妙的方法:
letters = [('a', 'A'), ('b', 'B')]
for i, (lowercase, uppercase) in enumerate(letters):
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
答案 1 :(得分:4)
我就是这样做的:
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
答案 2 :(得分:1)
你也可以这样做:
letters = [('a', 'A'), ('b', 'B')]
for i, letter in enumerate(letters):
print "Letter #%d is %s/%s" % (i, letter[0], letter[1])