我尝试创建一个2D动态数组映射,并为地图的每个位置分配一个名为Point的对象。当我尝试使用_create_map()
创建地图时,我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "map.py", line 97, in _create_map
self.mapa[x][y] = Point()
IndexError: list assignment index out of range
我尝试了不同的解决方案,但它仍然无效。
class Map():
latitude = 0
longitude = 0
xsize = 0 #in pixel
ysize = 0 #in pixel
mapa = [[],[]]
def __init__(self, longitude, latitude, xs, ys):
self.latitude = longitude
self.longitude = latitude
self.xsize = xs
self.ysize = ys
self.mapa = [[0 for x in range(self.xsize)] for y in range(self.ysize)]
def _create_map(self):
for y in range(self.ysize):
for x in range(self.xsize):
self.mapa[x][y] = Point()
答案 0 :(得分:1)
您的x和y维度混淆了。如果您想以 public void addState(String statename)
{
State state = new State();
state.name = statename;
statelist.add(state);
}
public State getStateByName(String stateName){
for(State state : statelist)
if(state.name == stateName)
return state;
}
的形式访问嵌套列表,那么您将从self.mapa[x][y]
获取第x个列表,并从该内部列表中获取第y个元素。
所以你需要将它初始化为:
self.mapa
或
self.mapa = [[0 for y in range(self.ysize)] for x in range(self.xsize)]
self.mapa = [[0]*self.ysize for x in range(self.xsize)]
列出每个xsize
长度,而不是ysize
列出每个ysize
长度。