列表的不同引用

时间:2021-04-16 12:15:15   收藏:0   阅读:0
#_*_ 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]]


评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!