python:为多维列表赋值

时间:2018-04-12 06:23:15

标签: arrays python-2.7 list

我有以下代码:

X = [[[None] * 4] * 2] * 6

for i in range(0, 6):
    X[i][0][0] = i

X

结果给出:

[[[5, None, None, None], [5, None, None, None]],
 [[5, None, None, None], [5, None, None, None]],
 [[5, None, None, None], [5, None, None, None]],
 [[5, None, None, None], [5, None, None, None]],
 [[5, None, None, None], [5, None, None, None]],
 [[5, None, None, None], [5, None, None, None]]]

这对我来说很奇怪,结果不应该如下吗?

[[[0, None, None, None], [0, None, None, None]],
 [[1, None, None, None], [1, None, None, None]],
 [[2, None, None, None], [2, None, None, None]],
 [[3, None, None, None], [3, None, None, None]],
 [[4, None, None, None], [4, None, None, None]],
 [[5, None, None, None], [5, None, None, None]]]

我在这里想念什么?谢谢!

1 个答案:

答案 0 :(得分:0)

a = [[]] * 2  # here initiated a list and assigned to a.
id(a[0]) >>> 4509460384
id(a[1]) >>> 4509460384

b = [[] for _ in range(2)]  # here constructing a list and assigning to b.
id(b[0]) >>> 4509626808
id(b[1]) >>> 4509626880

希望这清楚!