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條經驗 獲得超14個贊
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
提交
取消