作为一个非程序员,pyhon已经很少使用了,但是最近写一个小脚本发现这样一个问题。
向列表里添加字典。
代码如下:
test_dict = {"name": "Test", "age": 1}
test_list = []
for i in range(5):
test_dict["age"] = i
test_list.append(test_dict)
print(test_list)
运行接轨如下:
[{'name': 'Test', 'age': 4}, {'name': 'Test', 'age': 4}, {'name': 'Test', 'age': 4}, {'name': 'Test', 'age': 4}, {'name': 'Test', 'age': 4}]
发现结果并符合预期结果,这令我想起自学Python中的浅拷贝知识点,加进列表中的字典都是同一个内存地址的引用,所以导致全部相同。
可以将代码改成如下:
test_dict = {"name": "Test", "age": 1}
test_list1 = []
for i in range(5):
test_dict["age"] = i
test_list1.append(test_dict.copy())
print(test_list1)
吾老矣,只有真正动手写代码的时候才会发现问题。