class WorldMap (object):
def __init__ (self, width, height):
self.width = width
self.height = height
world = []
for i in range(self.width):
world.append(None)
for j in range(self.height):
world[i].append(None)
class WorldMap(object):
def __init__(self, width, height):
self.width = width
self.height = height
self.map = [[None for x in range(self.width)] for y in range(self.height)]
None
和''
,但都不起作用。为什么第一个代码中使用的''
和None
都不正确?答案 0 :(得分:3)
在您的第一个代码中,外部i
循环:
world = []
for i in range(self.width):
world.append(None)
创建None
的列表:
world == [None, None, None, ...]
因此在内部j
循环中,当您调用
world[i].append(None)
你打算打来电话:
None.append(None)
并且您无法附加到None
!外循环应该是:
world.append([]) # an empty list
然后内部循环将适用于您想要放入这些列表中的任何内容(None
,""
等)。
值得注意的是,第二个版本比第一个版本更整洁,(显然!)错误的可能性较小。但是,一点点改进(因为您从未使用x
或y
):
self.map = [[None for _ in range(width)] for _ in range(height)]
答案 1 :(得分:0)
在第一个循环的第一个代码中,您应该添加一个空列表而不是None
。
另外第二个版本更好。
答案 2 :(得分:0)
我们假设网格大小为:
size = 4
现在,我们正在制作一个空网格:
grid = []
for y in range(size):
grid = grid + [[]]
for x in range(size):
grid[y] = grid[y] + [0]
当你现在打电话给grid
时,你应该得到:
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
答案 3 :(得分:-1)
那呢?
网格= [[0] * 20] * 20