作者dodo52woman (嘟嘟左右衛門)
看板Python
標題[問題] append的問題
時間Wed Oct 13 11:21:48 2021
我是自學 所以有些 可能很簡單的東西 想要問一下
我建立一個列表 裡面的元素都是空列表
如果我想對列表內 某個元素(列表) 增加元素 該怎麼做比較好
我的作法
a = [[]] * 3
(a會變成 [[],[],[]]有三個空列表的列表)
我的想法是 如果要讓第一個列表增加元素
a[0].append("元素")
但實作時的結果卻是a列表中的每個元素列表都會增加元素
變成
a => [['元素'],['元素'],['元素']]
我想知道正確的作法
以及我的作法 為何錯誤
感謝各位 大神
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.24.215.112 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1634095311.A.E6A.html
1F:推 lycantrope: [[]]*3內的三個list都是同一個list 10/13 12:03
2F:→ lycantrope: 創建時可以a = [[] for _ in range(3)] 10/13 12:05
4F:→ cuteSquirrel: 透過單步執行的動畫觀察兩者的不同之處 10/13 12:06
5F:→ cuteSquirrel: 善用loop + list comprehension 建立多維陣列 10/13 12:08
喔喔 謝謝 我搞懂了 是一次 土法煉鋼 一個一個列表做 就正常了
原來 直接 * 3 有這種弊端 感謝各位!
※ 編輯: dodo52woman (114.24.215.112 臺灣), 10/13/2021 12:29:13
6F:→ dodo52woman: for in range 感謝 教學 10/13 12:29
7F:→ Jeffrey11061: 建議用numpy 10/22 19:08
8F:推 roccqqck: 不是處理大量data 沒事別用numpy 10/28 08:58
9F:→ roccqqck: 有C的python套件 快歸快 都該慎用 10/28 08:59
10F:推 lycantrope: CPython,都有C的套件lol 10/28 22:04