A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡俊凯 初级黑马   /  2019-10-25 19:36  /  780 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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’}]

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马