1 回答

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
好像問(wèn)題就在這里:
sales = (0, 0, {'product_id':'','product_uom_qty':''}),
b = []
b.extend(sales*noi)
{'product_id':'','product_uom_qty':''}是一個(gè)對(duì)象,您不克隆它,只需以這種方式復(fù)制其引用即可。因此 for 循環(huán)在每次迭代時(shí)都會(huì)更改相同的實(shí)例。這就是為什么您在每個(gè)副本中都有最后一次迭代的結(jié)果。
快速解決:
b = [(0, 0, {'product_id':'','product_uom_qty':''}) for _ in range(noi)]
您的示例之所以有效,是因?yàn)槟@樣聲明它:
b = (0, 0, {'product_id': '', 'product_uom_qty': ''}), (0, 0, {'product_id': '', 'product_uom_qty': ''})
您初始化了兩個(gè)不同的對(duì)象,因此它按預(yù)期工作。
這是一個(gè)非常棘手的問(wèn)題,謝謝你的謎題:)
獎(jiǎng)勵(lì):如果你想證明它實(shí)際上是同一個(gè)對(duì)象,你可以將這段代碼粘貼到兩個(gè)片段中:
print(id(b[0][2]))
print(id(b[1][2]))
添加回答
舉報(bào)