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)

结果正确:

相关推荐
曾阿伦2 小时前
Python 时间格式化指南
python
The_Ticker2 小时前
日股实时行情接口使用指南
java·经验分享·笔记·python·算法·区块链
m0_560396472 小时前
用Python创建一个Discord聊天机器人
jvm·数据库·python
m0_569881472 小时前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
2401_873204652 小时前
用Pandas处理时间序列数据(Time Series)
jvm·数据库·python
2301_776508722 小时前
定时任务专家:Python Schedule库使用指南
jvm·数据库·python
2301_763891953 小时前
使用Python控制Arduino或树莓派
jvm·数据库·python
2401_874732533 小时前
实战:用Python分析某电商销售数据
jvm·数据库·python
全栈凯哥3 小时前
26.Python os.path 完全指南
python
2301_793804693 小时前
Python内存管理机制:垃圾回收与引用计数
jvm·数据库·python