我试图从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
答案 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]