我对Python中的列表列表感到有些困惑.我有这两个片段:
li1 = [['a'], ['a'], ['a']]
print li1
for i in range(0, len(li1)):
li1[i] += [i]
print li1
li2 = [['a']] * 3
print li2
for i in range(0, len(li2)):
li2[i] += [i]
print li2
Run Code Online (Sandbox Code Playgroud)
创建后li1和li2是相同的,但是当我添加元素时,它们的行为有所不同:
[['a'], ['a'], ['a']]
[['a', 0], ['a', 1], ['a', 2]]
[['a'], ['a'], ['a']]
[['a', 0, 1, 2], ['a', 0, 1, 2], ['a', 0, 1, 2]]
Run Code Online (Sandbox Code Playgroud)
有人可以解释诀窍在哪里?
在li2 = [['a']] * 3您创建一个包含三个列表元素的列表,但这些列表实际上是同一个对象.这意味着:当你修改时li2[0],你也修改li2[1]和li2[2].
以下行实际上创建了一个列表,其中包含三个不同的列表对象:
li1 = [['a'], ['a'], ['a']]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,修改li1[0]时只修改该列表.其他列表不受影响.这解释了为什么你在li1和中得到不同的列表li2.
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |