从列表中提取项目并将它们分配给变量

时间:2016-05-22 16:28:11

标签: python list

我试图从numbers中提取前三项,并将它们分配给三个不同的变量,如下所示:

numbers = [1,2,3,4,5,7,8,9,10]
[first_item, second_item, third_item] = numbers

为什么我收到此错误?

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    [first_item, second_item, third_item] = numbers
ValueError: too many values to unpack

3 个答案:

答案 0 :(得分:8)

您没有在这样的列表中分配它们,并且您需要处理列表的其余解包 - 您的错误消息表明要解压缩的值多于要分配的变量。修改此方法的一种方法是将列表中的其余元素分配给rest变量,并使用*解压缩运算符

numbers = [1,2,3,4,5,7,8,9,10]
first_item, second_item, third_item, *rest = numbers

请注意,这只能在Python 3之后实现,请参阅PEP 3132 - Extended Iterable Unpacking

答案 1 :(得分:7)

正确的方法是 -

[first_item, second_item, third_item] = numbers[:3]

因为你正在寻找只分配前三个元素,所以错误来了,因为列表中的其他元素解释了赋值双方的不等式

答案 2 :(得分:4)

您要将10个数字的列表分配给3个数字,这是不明确的。切片会有所帮助:

a,b,c = numbers[:3]