C 知道
求问一下python list基础a = [[]]*5b = [[] for x in range(5)]这两个都是创建一个具有5个空list的list但是赋值的时候为什么a[0].append(1)的结果为[[1], [1], [1], [1], [1]]而b[0].append('1')的结果为[[1], [], [], [], []]求一份讲解谢谢🙏
收起
这个设计到指针的思想。a的直接乘以5,相当于原空列表原封不动的复制,指针指向同一地址。第二个是循环加入一个新的空列表,值相等都是空,但是地址却不一样,因为后面的是依次新加的。
看一下地址id就明白了
所以你第一个给 a[0] 添加内容,就是给这个共同地址加内容,因为地址是同一个,所以后面列表都加了。0你也可以写成其它数字,但是不能越界,就是不能超过列表长度
报告相同问题?
程序员都在用的中文IT技术交流社区
专业的中文 IT 技术社区,与千万技术人共成长
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!