如何在Python中对元组列表进行enumerate()?

59 投票
4 回答
42855 浏览
提问于 2025-04-15 11:31

我有一些这样的代码:

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)

撰写回答