Re: [閒聊] python大師請進已回收
看板Marginalman作者DJYOSHITAKA (franchouchouISBEST)時間1年前 (2024/05/16 23:45)推噓1(1推 0噓 3→)留言4則, 2人參與討論串72/75 (看更多)
a = [[[]]*3 for _ in range(3)]
print(a) #[[[], [], []], [[], [], []], [[], [], []]]
a[0][0].append(1)
print(a) #[[[1], [1], [1]], [[], [], []], [[], [], []]]
[[]]*3裡面的三個[]會指向同一個因為list is mutable
P = [[()]*3]*3
P[0][0] = 1
print(P) #[[1, (), ()], [1, (), ()], [1, (), ()]]
這邊一樣 內層的[()]*3是個list 所以外層*3會讓裡面的三個[(),(),()]指向同一個
P = [[()]*3 for _ in range(3)]
print(P) #[[1, (), ()], [(), (), ()], [(), (), ()]]
因為()immutable [(),(),()]裡面的三個()指向不同記憶體
然後再用list conprehension做三次
所以九個()都指向不同的地方
希望我沒理解錯==
看來我都在亂用
※ 引述《DJYOSHITAKA (franchouchouISBEST)》之銘言:
: 我想init一個mxn的2D list,然後每個element又是一個空的list
: 我這樣寫(假設m=n=3)
: a = [[[]]*3 for _ in range(3)]
: print(a)
: a[0][0].append(1)
: print(a)
: 然後
: [[[], [], []], [[], [], []], [[], [], []]]
: [[[1], [1], [1]], [[], [], []], [[], [], []]]
: ???
: 我想要的是
: [[[1], [], []], [[], [], []], [[], [], []]]
: 我哪裡寫錯了嗎==
: 聖我不會py了 加入不了py邦
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.137.230.241 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1715874330.A.14F.html
→
05/16 23:46,
1年前
, 1F
05/16 23:46, 1F
對不起== 我換暗色了
※ 編輯: DJYOSHITAKA (114.137.230.241 臺灣), 05/16/2024 23:50:27
推
05/16 23:54,
1年前
, 2F
05/16 23:54, 2F
→
05/16 23:54,
1年前
, 3F
05/16 23:54, 3F
→
05/16 23:54,
1年前
, 4F
05/16 23:54, 4F
討論串 (同標題文章)