【问题标题】:How loop map from corner to mid?如何从角落到中间循环映射?
【发布时间】:2016-02-28 11:37:47
【问题描述】:

我有一个平方地图(python),每个点都表示为(y,x)的坐标。我想知道,如何遍历“圆”中的每个点(图片)。 .我不知道如何开始,无论是for循环还是while循环,但我认为for循环在这里毫无用处。我真的迷路了。我没有解决任何问题,我只是对此感到好奇。谢谢!

【问题讨论】:

  • Stackoverflow 不是编码服务。到目前为止你尝试了什么?您在此过程中遇到的确切问题是什么?请编辑您的问题以指定这一点。
  • for x in range(numcols): for y in range(numrows):。是这个意思吗?
  • @zondo 可能不会。
  • 这似乎是一个很好的练习,但你至少应该自己尝试一下。
  • 你需要坐标吗?一种方法是消耗第一列,然后旋转(反转和转置)其余列。否则,就去做显而易见但乏味的事情并玩得开心。

标签: python algorithm loops


【解决方案1】:

解决问题的一种可能方法是从走路的角度来思考它。您先走下 5 步,然后左转再走 5 步。对于您所走的每个方向,您只需将其中一个坐标更改 1(或 -1)并保持另一个不变。

有了这个想法,你可以创建一个方向列表,向下将增加y,但留下x,即(1, 0)将添加到每一步。当您向左转时,y 保持不变,但您增加 x,即将添加 (0, 1),以此类推。然后,您将有 4 指示循环。

接下来你需要弄清楚每个方向需要多少步。

Python 提供了一个工具,用于循环遍历一个名为cycle 的条目列表。每次调用 next 时,它都会在方向列表中提供下一个条目。

因此,以下内容应该可以帮助您入门:

from itertools import cycle, repeat

walk = [0, 0]
direction = cycle([(1, 0), (0, 1), (-1, 0), (0, -1)])

for steps in [5, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1]:
    offset = next(direction)
    for step in range(steps):
        print walk
        walk[0] += offset[0]
        walk[1] += offset[1]

如果不允许您使用任何库,那么您将需要考虑一种不同的方式来循环浏览每个方向,我会让您尝试和思考。

下一步可能是通过思考如何自动构建您的步骤列表,尝试将这个想法推广到任何大小的正方形。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 2021-11-26
    • 2021-03-30
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多