Don*_*beo 2 python nested-lists
我一直在使用python,今天我对一个简单的嵌套列表感到惊讶.
如何更改列表元素的值?
>>> l=[[0,0]]*10
>>> l
[[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
>>> l[0]
[0, 0]
>>> l[0][0]
0
>>> l[0][0]=1 #here comes the question
>>> l
[[1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0]]
>>>
Run Code Online (Sandbox Code Playgroud)
我期望作为最终结果
l=[[1,0],[0,0],[0,0]...]
Run Code Online (Sandbox Code Playgroud)
为什么不追加?(我想要一个理论上的解释)我怎样才能得到理想的结果?
谢谢.
编辑:在以另一种方式启动列表时,我得到了所需的结果
>> l=[[0,0],[0,0]]
>>> l
[[0, 0], [0, 0]]
>>> l[0][0]=1
>>> l
[[1, 0], [0, 0]]
>>>
Run Code Online (Sandbox Code Playgroud)
但我仍然想知道为什么第一个版本不起作用,我怎么能初始化很多元素的列表?
mhl*_*ter 10
这里有10次相同 [0, 0]元素的列表:
l=[[0,0]]*10
Run Code Online (Sandbox Code Playgroud)
每次修改一个,它都会修改它们,因为它们是相同的列表.
让它们与众不同的一种安全方法是:
l = [[0, 0] for _ in range(10)]
Run Code Online (Sandbox Code Playgroud)
一种简单的检查方法是打印id每个,它是存储它的内存地址:
>>> for element in l:
... print id(element)
...
34669128
34669128
34669128
34669128
34669128
34669128
34669128
34669128
34669128
34669128
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5743 次 |
| 最近记录: |