Re: [閒聊] python大師請進已回收

看板Marginalman作者 (franchouchouISBEST)時間1年前 (2024/05/16 23:45), 1年前編輯推噓1(103)
留言4則, 2人參與, 1年前最新討論串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
應該是 你()那個位置要new一個物件
05/16 23:54, 2F

05/16 23:54, 1年前 , 3F
詳細過程可能要看bytecode
05/16 23:54, 3F

05/16 23:54, 1年前 , 4F
窩也不是很懂
05/16 23:54, 4F
文章代碼(AID): #1cHYeQ5F (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1cHYeQ5F (Marginalman)