好像是我 2021-08-24 02:54 采纳率: 100%
浏览 48
已结题

问一下python list基础知识

求问一下python list基础
a = [[]]*5
b = [[] for x in range(5)]
这两个都是创建一个具有5个空list的list
但是赋值的时候为什么a[0].append(1)的结果为[[1], [1], [1], [1], [1]]
而b[0].append('1')的结果为[[1], [], [], [], []]
求一份讲解谢谢🙏

  • 写回答

2条回答 默认 最新

  • 快ྂ乐ྂ至ྂ上ྂ 2021-08-24 04:24
    关注

    这个设计到指针的思想。
    a的直接乘以5,相当于原空列表原封不动的复制,指针指向同一地址。第二个是循环加入一个新的空列表,值相等都是空,但是地址却不一样,因为后面的是依次新加的。

    看一下地址id就明白了

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    快ྂ乐ྂ至ྂ上ྂ 2021-08-24 04:29

    所以你第一个给 a[0] 添加内容,就是给这个共同地址加内容,因为地址是同一个,所以后面列表都加了。0你也可以写成其它数字,但是不能越界,就是不能超过列表长度

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 8月31日
  • 已采纳回答 8月24日
  • 创建了问题 8月24日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部