1、循环 while、for 2、用index来定位范围、位置时要注意会因为有重复的数据而出现错误 3、a = b = 数值,指向同一个地址,所以a和b其中一个数值发生变化,另一个数也跟着发生变化,不等价于a =0,b = 0(等价于a,b = 0,0) 4、列表的append方法在为其添加数据的时候并没有将完整的字典数据都拷贝的列表当中(为了提高空间的使用率),而是存储字典数据所在地址。而以上这种方式修改的是该内存地址下的数据,这就导致了问题。 解决 4.1、每次字典重新开辟内存空间,并使变量a指向该空间,因此不会出现相同地址的问题 list = [] a= {'a':'1', 'b':'1'} list.append(a) a= {'a':'2', 'b':'2'} list.append(a) print(list) [{‘a’: ‘1’, ‘b’: ‘1’}, {‘a’: ‘2’, ‘b’: ‘2’}] 4.2、 每次为列表添加数据的时候,在内存中其他位置创建与该字典相同的数据并加入列表(若字典内包含列表,需要使用deepcopy) list = [] a= {'a':'1', 'b':'1'} list.append(a.copy()) a['a'] = '2' a['b'] = '2' list.append(a.copy()) print(list) [{‘a’: ‘1’, ‘b’: ‘1’}, {‘a’: ‘2’, ‘b’:‘2’}]
|