【问题标题】:Python , how to convert this iterations into for loopPython,如何将此迭代转换为 for 循环
【发布时间】:2022-01-03 18:52:45
【问题描述】:

这是迭代

i = 0

s_array[i].append(f_array[i][i])
s_array[i].append(f_array[i+1][i])
s_array[i].append(f_array[i+2][i])

s_array[i+1].append(f_array[i][i+1])
s_array[i+1].append(f_array[i+1][i+1])

s_array[i+2].append(f_array[i][i+2])

我想将此迭代转换为 for 循环 比如这样

for i in range(something):
        for j in range(something):
                s_array[i].append(f_array[j][i])

我尝试了很多尝试和错误,但没有得到任何解决方案

【问题讨论】:

  • 为什么?此外,还不清楚根据什么规则计算不同的索引偏移量。
  • 你遇到了什么错误?
  • 我不认为“迭代”意味着你认为它的意思。
  • 基本上我想这是我的第一个数组``` f_array = [['a', 'ab', 'abc'], ['b', 'bc'], ['c ']]``` 我想把这个 f_array 转换成这个 s_array ``` s_array = [['a', 'b', 'c'], ['ab', 'bc'], ['abc'] ] ```@Scott Hunter
  • 所以我尝试了上面的代码并得到了解决方案,但我想将该代码放入 for 循环中意味着我想让它动态@Chris Doyle

标签: python arrays list loops for-loop


【解决方案1】:

等效迭代:

for i in range(3):
    for j in range(3 - i):
        s_array[i].append(f_array[j][i])

例如:

for i in range(3):
    for j in range(3 - i):
        print(i,"-->", j, i)
    print("")

输出:

0 --> 0 0
0 --> 1 0
0 --> 2 0
1 --> 0 1
1 --> 1 1
2 --> 0 2

【讨论】:

    【解决方案2】:

    由于您尝试使用循环将值附加到数组,因此您可以尝试嵌套 for 循环,如您所指出的。此外,由于您在迭代继续时附加的值更少,因此您可以为循环中的 range() 函数之一实现负步长值,从而减少迭代次数。

    尝试做这样的事情:

    for i in range(3):
        for j in range(3-i):
            s_array[i].append(f_array[j][i])
    

    希望这能解决您的问题。

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 2023-01-22
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多