当前位置:   article > 正文

python中嵌套列表的创建问题_python列表里面嵌套列表题目

python列表里面嵌套列表题目

问题引出
创造嵌套列表dlist,可视为四行三列的矩阵,其中每个元素都为0。
将1赋值给索引为[0][0]的元素,预期效果为[[1,0,0],[0,0,0],[0,0,0],[0,0,0]],实际效果如下图所示
在这里插入图片描述
解析
创建嵌套列表dlist时,

  • list1=[0]*3,创建了list1列表,为[0,0,0]
  • list2=[list1]*4=[[0]*3]*4,即为[0,0,0]*4,

list2中的每个小列表都指向list1列表的内存,当对list2的任意子列表进行修改,会修改指向list1列表中的变量,从而所有指向list1的变量都会随之改变!

  • 验证方法:
    可以通过内置函数id()来查看list2的子元素 内存地址
    【若a与b内存地址相同,证明变量a和变量b指向同一个对象】
    list2[0],list2[1],list2[2],list2[3]的id值全相同
    在这里插入图片描述

解决方法
列表推导
在这里插入图片描述

参考资料
Python中列表赋值中的坑
python 踩坑系列之嵌套列表创建
python3 踩坑之:*操作符生成二维列表

存疑
用 * 创建单层列表时,其子元素内存地址相同,但不会出现嵌套列表内的赋值问题。
在这里插入图片描述 在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/201835
推荐阅读
相关标签
  

闽ICP备14008679号