【问题标题】:for loop never ends with a matrixfor 循环永远不会以矩阵结束
【发布时间】:2017-05-25 23:08:51
【问题描述】:
for sublistas in matriz:
    for espacios in matriz:
        ran = random.choice([p_vivo, p_muerto])
        matriz.append(ran)

我正在尝试使用具有 2 个随机选择的矩阵:p_muerto 或 p_vivo 问题是,循环永远不会结束。我认为是因为它一直在覆盖矩阵的元素,所以它会无限期地继续下去。

我能做什么?

【问题讨论】:

  • 为什么要在同一个矩阵上循环两次?期望的结果应该是什么?
  • 修正缩进。第二个for 循环必须在第一个循环中缩进。
  • 缩进很好。它只是在这个网站上看起来不同。
  • 我循环了两次,因为它是一个 15x15 矩阵。我需要输入每一行,然后是每个元素。
  • 你不是循环遍历行和列,而是循环遍历两个循环中的所有元素。

标签: python for-loop matrix random


【解决方案1】:

是的,发生了无限循环,因为您正在修改原始矩阵添加一个新元素。

您可以创建该矩阵的副本并对复制的矩阵进行操作 - 原始矩阵将保持安全且不会被修改。

如果您想使用原始矩阵进行操作 - 您只需遍历副本即可。

【讨论】:

  • 既然他想追加到矩阵,他可能应该在副本上循环。
【解决方案2】:

要遍历列表列表,您需要执行以下操作:

for sublist in matriz:
    for element in sublist:

如果您要追加到循环中的列表,您应该循环遍历副本。而且您不应该附加到顶级列表,而应该附加到子列表。或者,也许您应该制作新的子列表并附加到它们。不清楚你想要的结果是什么。

for sublist in matrix[:]:
    for element in sublist[:]:
        ran = random.choice([p_vivo, p_muerto])
        sublist.append(ran)

这会将列表从 15x15 更改为 15x30

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 2011-01-20
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多