尝试迭代Python中的以下2d列表,找到乌龟图形的x,y坐标。
data_set_01 = [['A', 1, 0, 'N'], ['A', 2, 1, 'E'], ['A', 3, 2, 'S'], ['A', 4, 3, 'W']]
拥有以下代码:
def draw_icons(data_set):
for xpos in data_set: #find x co-ordinates
if data_set[[xpos][1]] == 0:
xpos = -450
elif data_set[[0][1]] == 1:
xpos = -300
elif data_set[[xpos][1]] == 2:
xpos = -150
elif data_set[[xpos][1]] == 3:
xpos = 0
elif data_set[[xpos][1]] == 4:
xpos = 150
elif data_set[[xpos][1]] == 5:
xpos = 300
for ypos in data_set: #find y co-ordinates
if data_set[[ypos][2]] == 0:
ypos = -300
elif data_set[[ypos][2]] == 1:
ypos = -150
elif data_set[[ypos][2]] == 2:
ypos = 0
elif data_set[[ypos][2]] == 3:
ypos = 150
goto(xpos,ypos)
pendown()
setheading(90)
commonwealth_logo()
收到以下错误:
if data_set[[xpos][1]] == 0:
IndexError: list index out of range
不确定我在这里做错了什么。
答案 0 :(得分:0)
编辑:
此外,似乎xpos
实际上是您的数据集中的完整元素 - for xpos in data_set:
,如果您可以这样做 -
xpos[1] #instead of `data_set[[xpos][1]]` .
同样在所有其他地方。
您似乎错误地将列表编入索引。当你这样做 -
data_set[[xpos][1]]
您实际上正在创建单个元素xpos
的列表,然后从中访问其第二个元素(index - 1),它总是会出错。
这不是您在Python中索引2D列表的方式。您需要访问类似 -
list2d[xindex][yindex]
答案 1 :(得分:0)
让我们提取xpos
& ypos
一起计算位置:
data_set_01 = [['A', 1, 0, 'N'], ['A', 2, 1, 'E'], ['A', 3, 2, 'S'], ['A', 4, 3, 'W']]
def draw_icons(data_set):
for _, xpos, ypos, letter in data_set:
x = (xpos - 3) * 150
y = (ypos - 2) * 150
goto(x, y)
pendown()
setheading(90)
write(letter, align='center') # just for testing
draw_icons(data_set_01)