如何在Python中对元组列表进行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: %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)
还是说有更简单的方法呢?
4 个回答
1
你也可以这样做:
letters = [('a', 'A'), ('b', 'B')]
for i, letter in enumerate(letters):
print "Letter #%d is %s/%s" % (i, letter[0], letter[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
142
这是一个很不错的方法:
letters = [('a', 'A'), ('b', 'B')]
for i, (lowercase, uppercase) in enumerate(letters):
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)