我是新手到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