亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號