码迷,mamicode.com
首页 > 其他好文 > 详细

列表的不同引用

时间:2021-04-16 12:15:15      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:int   charm   因此   pychar   项目   har   arm   for   效果   

#_*_ encoding: utf-8 _*_   @author: ty  heris
#项目名称:   pycharm_file 会自动替换为当前项目名称
#创建时间:  2018/5/6 会自动替换为当前日期

lst1 = [[0]*5]*5
print(lst1)
# [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
#
lst2 = [[0 for i in range(5)] for j in range(5)]
print(lst2)
# # [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
#
# # 两种生成效果是一致的吗?乍一看,貌似一致,其实不然。
lst1[0][0]=1
print(lst1)
# # [[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]
#
lst2[0][0]=1
print(lst2)
# # [[1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
#
# # 可以看出lst1 = [[0]*5]*5 其实只有一行申请了内存,其他的4行都引用该行,因此赋值时每一行都会发生变化。

输出:
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
[[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]
[[1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]


列表的不同引用

标签:int   charm   因此   pychar   项目   har   arm   for   效果   

原文地址:https://www.cnblogs.com/heris/p/14664958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!