python疑难问题---5、二维列表初始化
一、总结
一句话总结:
可以用c = [[0]*4 for _ in range(3)]的方式来初始化3行4列的二维数组,用乘号(*)重复不可变数据类型(这里是int 0),用循环重复可变数据类型(这里是列表)
1、b = [[0] * 4] * 3 初始化3行4列 二维数组不可行的实质?
列表在用乘号(*)重复的时候,重复的列表的地址是一样的,而python中的列表是可变数据类型,地址一样,代表指向的是同一个列表,当然会一变全变,也就是b[0][0]变的时候,b[1][0]和b[2][0]都会跟着变
二、二维列表初始化
一、分析
当我们使用python处理数据的时候,经常会遇到需要初始化一个二维列表,然后对列表的每一个子项目(我们这里假设也是列表)进行操作。
列表的乘号(*)操作可以重复元素,比如
In [16]:
print(['Hi!'] * 4)
['Hi!', 'Hi!', 'Hi!', 'Hi!']
所以我们考虑用 *号 来初始化列表
In [17]:
a = [0] * 5
print(a)
[0, 0, 0, 0, 0]
In [18]:
print(id(a[0]))
print(id(a[1]))
print(id(a[2]))
print(id(a[3]))
print(id(a[4]))
14072400056