如何用枚举解压缩元组列表?

时间:2017-08-18 15:33:50

标签: python python-3.x tuples iterable-unpacking

我偶然发现了一个无法解释的解包问题。

这有效:

tuples = [('Jhon', 1), ('Jane', 2)]

for name, score in tuples:
    ...

这也有效

for id, entry in enumerate(tuples):
    name, score = entry
    ...

但这不起作用:

for id, name, score in enumerate(tuples):
    ...

抛出ValueError: need more than 2 values to unpack例。

2 个答案:

答案 0 :(得分:6)

enumerate本身使用列表值及其相应的索引创建元组。在这种情况下:

list(enumerate(tuples))

给出:

[(0, ('Jhon', 1)), (1, ('Jane', 2))]

要完全打开包装,可以试试这个:

for index, (name, id) in enumerate(tuples):
     pass

这里,Python正在削减右侧的索引和元组对象,结果在左侧,然后分配。

答案 1 :(得分:3)

解包时将namescore包装在元组中。

for id, (name, score) in enumerate(tuples):
    print(id, name, score)

# Output
# (0, 'Jhon', 1)
# (1, 'Jane', 2)
  

枚举(thing),其中thing是迭代器或序列,返回将返回的迭代器(0,thing [0]),(1,thing [1]),(2,thing [2])等等。

在这种情况下,事物是一个元组。

相关问题