麻烦在Python for循环中走并行列表

时间:2016-05-17 02:34:11

标签: python for-loop turtle-graphics

我正在尝试编写代码,该代码在列表中相同索引所包含的xy坐标中绘制列表 sides 中由长度 - 宽度对表示的每个矩形 COORDS 即可。

变量 coords 包含大小为2的子列表,其中每个值都代表x和y坐标。

变量边还包含大小为2的子列表,其中每个值都代表长度,然后是矩形的宽度。

我已经编写了一个名为 draw_rectangle 的函数,它将两个整数作为参数,表示长度,然后是矩形的宽度。

说完了,我现在很难做出for循环。 这就是我出来的,似乎无法工作

for pair in sides:
    penup()
    goto(coords[index])
    pendown()
    draw_ractangle(sides[index][0], sides[index][1])

或者我必须去

for draw_ractangle()

有什么建议吗?谢谢

2 个答案:

答案 0 :(得分:0)

这似乎是enumerate()和结构分配的问题:

sides = [(34, 23), (65, 72)]
coords = [(10, 100), (-45, 60)]

# ...

for index, (width, height) in enumerate(sides):
    penup()
    goto(coords[index])
    pendown()
    draw_rectangle(width, height)

答案 1 :(得分:0)

我希望看到这个用zip来处理:

for (location, dimensions) in zip(coords, sides):
  penup()
  goto(location)
  pendown()
  draw_rectangle(*dimensions)

通常,python样式更喜欢避免循环索引而转而使用循环内容。通过创建元组列表,zip函数是实现此目的的一种很好的方法。 我对平行列表模式感到担忧,该模式通常很脆弱且容易破损,并且更愿意看到表示要绘制的每个对象的数据结构,以避免位置和维度不同步的危险。