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

2024-06-01 01:07:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的代码:

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)

还是有更优雅的方式?


Tags: 函数代码in列表foris方式元组
3条回答

我就是这样做的:

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, (lowercase, uppercase) in enumerate(letters):
    print "Letter #%d is %s/%s" % (i, lowercase, uppercase)

你也可以这样做:

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

相关问题 更多 >