python二维数组创建赋值问题:更改单个值却更改了所有项的值

python 复制代码
test_list = []
dic1 = {}
test_list = [dic1 for _ in range(3)]
ll = [1, 2, 3]

for i in range(3):
    test_list[i]['value'] = ll[i]

print(test_list)

运行结果:每次赋值都更改了所有项

原因:python的二位数据创建方式就是这样,官方文档中有描述What has happened is that [[]] is a one-element list containing an empty list,

so all three elements of [[]] * 3 are references to this single empty list.

Modifying any of the elements of lists modifies this single list. You can create a list of different lists this way:

python 复制代码
>>> lists = [[] for i in range(3)]
>>> lists[0].append(3)
>>> lists[1].append(5)
>>> lists[2].append(7)
>>> lists
[[3], [5], [7]]

那么,将上述代码修改为:

python 复制代码
test_list = []
test_list = [{} for _ in range(3)]
ll = [1, 2, 3]

for i in range(3):
    test_list[i]['value'] = ll[i]

print(test_list)

结果正确:

相关推荐
2401_846341655 分钟前
Python Lambda(匿名函数):简洁之道
jvm·数据库·python
2401_879693878 分钟前
进阶技巧与底层原理
jvm·数据库·python
阿_旭9 分钟前
基于YOLO26深度学习的【桃子成熟度检测与分割系统】【python源码+Pyqt5界面+数据集+训练代码】图像分割、人工智能
人工智能·python·深度学习·桃子成熟度检测
蹦哒12 分钟前
Kotlin 与 Java 语法差异
java·python·kotlin
jerryinwuhan23 分钟前
python数据挖掘基础
python·数据挖掘·numpy
echome88827 分钟前
Python 异步编程实战:asyncio 核心概念与最佳实践
开发语言·网络·python
yunyun3212331 分钟前
自动化与脚本
jvm·数据库·python
暮冬-  Gentle°32 分钟前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
setmoon21433 分钟前
构建一个基于命令行的待办事项应用
jvm·数据库·python
研究点啥好呢42 分钟前
3月22日GitHub热门项目推荐|网页浏览,何须手动
人工智能·python·开源·github