Python向嵌套列表添加元素时所有子列表同步更新异常问题
问题根因
Python中的列表是可变对象,使用*运算符生成重复的嵌套列表时,仅会复制子列表的内存引用,不会创建新的独立子列表。你使用的my_list = [[0]]*10写法,最终得到的10个[0]子列表实际上指向同一个内存地址,修改任意一个子列表的内容,所有子列表都会同步变更,因此会出现所有子列表都新增元素的不符合预期的现象。
解决方案
初始化嵌套列表时,要确保每个子列表都是独立的对象,最常用的方法是用列表推导式替换原有*初始化的写法:
my_list = [[0] for _ in range(10)] x = int(input()) my_list[x].append(x) print(my_list)
上述代码输入x=1时,输出结果和你预期的一致:[[0], [0, 1], [0], [0], [0], [0], [0], [0], [0], [0]]
内容的提问来源于stack exchange,提问作者xb2107
相关产品推荐
相关产品推荐

