为了账号安全,请及时绑定邮箱和手机立即绑定

for 循环 - 没有足够的值来解压(预期 3,得到 2)但我提供了 3

for 循环 - 没有足够的值来解压(预期 3,得到 2)但我提供了 3

慕虎7371278 2023-01-04 11:14:51
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 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

您需要压缩列表以便执行这样的 for 循环,而无需遍历传入的参数func()

def func(a,b,c):

    for x,y,z in zip(a,b,c):

        pass


func(((1,2),(1,3)),((1,4),(1,5)),(1,2))

否则,for 循环将遍历传入的每个参数func。


查看完整回答
反对 回复 2023-01-04
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

a,b,c是一个带有隐式括号的元组。它与(a,b,c).

for x,y,z in (a,b,c):

此循环不会解压缩ax,by,cz。相反,它具有三个迭代。它尝试解压缩ax,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):


查看完整回答
反对 回复 2023-01-04
  • 2 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信