def func(a,b,c): for x,y,z in a,b,c: passfunc(((1,2),(1,3)),((1,4),(1,5)),(1,2))我希望x,y,z得到值(1,2)、(1,4)和1。相反,我收到一个错误:ValueError: not enough values to unpack (expected 3, got 2)
2 回答
翻翻过去那场雪
TA贡献2065条经验 获得超13个赞
a,b,c
是一个带有隐式括号的元组。它与(a,b,c)
.
for x,y,z in (a,b,c):
此循环不会解压缩a
到x
,b
到y
,c
到z
。相反,它具有三个迭代。它尝试解压缩a
到x,y,z
. 下一次迭代解包b
,第三次解包c
。
可以a
解压成x,y,z
?嗯,a
是一个包含两个元素的元组:(1,2)
和(1,3)
。两个元素不能解包为三个变量。所以不,它不能。这就是您收到错误消息“预期 3,得到 2”的原因。
我不知道你打算这段代码做什么。您也许可以通过包装(a,b,c)
一个额外的迭代来修复它。以下任一项:
for x,y,z in ((a,b,c),): for x,y,z in [(a,b,c)]:
或者,如果您想要三个元组中的每一个元素,请使用zip
串联迭代所有三个元组:
for x,y,z in zip(a,b,c):
添加回答
举报
0/150
提交
取消