考虑一下:
list = 2*[2*[0]]
for y in range(0,2):
for x in range(0,2):
if x ==0:
list[x][y]=1
else:
list[x][y]=2
print list
Run Code Online (Sandbox Code Playgroud)
结果:
[[2,2],[2,2]]
Run Code Online (Sandbox Code Playgroud)
为什么结果不是[[1,1],[2,2]]?
Joh*_*ooy 12
因为您要创建一个列表,该列表是对同一子列表的两个引用
>>> L = 2*[2*[0]]
>>> id(L[0])
3078300332L
>>> id(L[1])
3078300332L
Run Code Online (Sandbox Code Playgroud)
因此对L [0]的更改将影响L [1],因为它们是相同的列表
做你想做的通常的方法是
>>> L = [[0]*2 for x in range(2)]
>>> id(L[0])
3078302124L
>>> id(L[1])
3078302220L
Run Code Online (Sandbox Code Playgroud)
注意L [0]和L [1]现在是不同的
| 归档时间: |
|
| 查看次数: |
1603 次 |
| 最近记录: |