【发布时间】:2011-04-04 23:20:04
【问题描述】:
所以我试图在 Python 中根据宽度和高度生成一个嵌套列表。这是我目前所拥有的:
width = 4
height = 5
row = [None]*width
map = [row]*height
现在,这显然不太正确。打印出来看起来不错:
[[None, None, None, None],
[None, None, None, None],
[None, None, None, None],
[None, None, None, None],
[None, None, None, None]]
但试图为这样的位置赋值:
map[2][3] = 'foo'
我明白了:
[[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo']]
很明显,这是因为每个子列表实际上只是引用同一个对象、行,因此更改一个对象会更改它们。所以这是我得到的最接近的!
如何动态生成嵌套列表?谢谢!
【问题讨论】:
-
虽然不是完全重复,但请参阅:stackoverflow.com/questions/1605024/…
-
map()是一个内置函数,重写它不是一个好主意。查找其他名称,如果需要,您可以附加_。