l = []
a = {'name':'lisa'}
l.append(a)
print(l,'\n','='*20)

这里得到列表l为:[{‘name’: ‘lisa’}]
继续输入代码:
l = []
a = {'name':'lisa'}
l.append(a)
print(l,'\n','='*20)
a['name'] = 'tom'
print('a:',a)
l.append(a)
print(l)
注意第二次打印的列表l,本应该是[{‘name’: ‘lisa’},{‘name’: ‘tom’}]
让我们看一下结果:

乍一看我的天,lisa怎么没有了,而是两个tom,细想一下,这是因为列表中存储的不是一个字符串,而是指向内存ip的一个指针,指针所指向的内容发生了变化,lisa自然也就变了。
本文通过一个简单的Python代码示例,解释了列表中存储对象引用而非直接存储值的特点。当列表内的字典被修改时,所有指向该字典的引用都会反映出这一变化,这对于理解数据结构的行为至关重要。

被折叠的 条评论
为什么被折叠?



