当我做一个练习时,我想生成一个m*n列表,所有的元素都是0。
我发现一个有趣的问题:
# first way
a = [[0]*n]*m
a[0][0]=1
# then I find a[1][0]=1,a[2][0]=1....
# second way
b = [[0 for _ in range(n)] for _ in range(m)]
b[0][0]=1
# in this way, I get the normal effect
我对第一种方法感到困惑,list的*
是什么意思
Tags:
*
操作符实质上获取旧列表,并将其重新创建n
次。新项与旧项相同(引用相同),但列表的长度是旧项的n
倍原始列表是而不是修改的,只要在末尾添加新的副本就可以修改它
例如:
[1,2,3] * 3 = [1,2,3,1,2,3,1,2,3]
[[1],[2]] * 3 = [[1],[2],[1],[2],[1],[2]]
用
append
实现“相同”的目标:相关问题 更多 >
编程相关推荐