[問題] 這算是 BUG 嗎?

看板Python作者 (張三立)時間10年前 (2016/01/04 10:21), 編輯推噓2(203)
留言5則, 4人參與, 最新討論串1/1
>>> x=[[]]*2 >>> x [[], []] >>> x[0].append('a') >>> x[1].append('b') >>> x [['a', 'b'], ['a', 'b']] >>> 與預期的結果 [['a'],['b']] 不同 請問這算是 IDLE 的 BUG 嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.27.106.65 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1451874080.A.68A.html

01/04 10:43, , 1F
不是,你應該用 x = [[] for i in range(2)]
01/04 10:43, 1F

01/04 10:44, , 2F
[[]]*2得到的是兩個指向同一個位址的[]
01/04 10:44, 2F

01/04 20:01, , 3F

01/05 07:53, , 4F
不是bug 這就像是a = []; x=a*2; # x[0]==x[1]==a
01/05 07:53, 4F

01/05 12:15, , 5F
樓上我知道你想說什麼, 但你的例子完全不對, 應該用 is
01/05 12:15, 5F
文章代碼(AID): #1MYTSWQA (Python)
文章代碼(AID): #1MYTSWQA (Python)