我是新手到Python。请让我知道为什么stairlist [1] [0] =当stairlist = [0,0] * 8
>>> stairlist = [[0,0]] * 8
>>> stairlist
[[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
>>> stairlist[1][0] = 2
>>> stairlist
[[2, 0], [2, 0], [2, 0], [2, 0], [2, 0], [2, 0], [2, 0], [2, 0]]
初始化2语句将所有数值但是,当我初始化根据stairlist变量以下然后它工作正常。
>>> stairlist = [[1,2],[1,2]]
>>> stairlist
[[1, 2], [1, 2]]
>>> stairlist[1][1] = 3
>>> stairlist
[[1, 2], [1, 3]]
貌似'[[0,0]] * 8'语法使用别名,而不是独立的副本。不确定这是在规范中还是实施问题。 – jpm 2012-03-30 20:33:20
@FelixKling,不错的地方。 – jpm 2012-03-30 20:34:42
@jpm:是的,它在规范中。它被称为*序列重复*。请参阅http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange note(2),并注意副本被定义为浅拷贝。 – 2012-03-30 20:39:14