Victor0321 发表于 2022-4-4 17:31:25

关于ValueError: too many values to unpack (expected 2)

这个报错是怎么出来的呀。。。 我看经常会报这种错,如果出现了 我这个解决这个bug的思路是什么啊

>>> x =
>>> y = "FishC"
>>> for i, j in x, y:
...   print(i, j)
...
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
    for i, j in x, y:
ValueError: too many values to unpack (expected 2)

isdkz 发表于 2022-4-4 17:34:55

x =
y = "FishC"
for i, j in zip(x, y):
    print(i, j)

Victor0321 发表于 2022-4-4 17:43:57

isdkz 发表于 2022-4-4 17:34


emmm 他这个报错是为啥啊

isdkz 发表于 2022-4-4 17:47:00

本帖最后由 isdkz 于 2022-4-4 17:48 编辑

Victor0321 发表于 2022-4-4 17:43
emmm 他这个报错是为啥啊

for i, j in x, y 相当于 for i, j in (x, y) 也就是把 x, y 当成元组,

他会把迭代出的每一项解包给 i 和 j,而你的 x 和 y 都有 5 个元素,是没法解包给 2 个变量的

Victor0321 发表于 2022-4-4 17:56:09

isdkz 发表于 2022-4-4 17:47
for i, j in x, y 相当于 for i, j in (x, y) 也就是把 x, y 当成元组,

他会把迭代出的每一项解包 ...

emmm   您的意思是: (x,y)这个元组是(,'fishc')他无法直接解包给i,j, 需要转换成((1,f),(2,i)(3,s)(4,h)(5,c))这个元组才能一一解包给对应的i,j 变量 循环5次么

isdkz 发表于 2022-4-4 18:02:01

Victor0321 发表于 2022-4-4 17:56
emmm   您的意思是: (x,y)这个元组是(,'fishc')他无法直接解包给i,j, 需要转换成((1,f),(2, ...

是(x, y) 这个元组的元素 x 和 y 都有 5 个元素,所以无法解包给 i, j 两个变量,

当然,你可以加个打包:for i, *j in x, y

但是这样很明显不是你的需求
页: [1]
查看完整版本: 关于ValueError: too many values to unpack (expected 2)