作者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/cn.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