gpt4 book ai didi

python - for循环被用作while循环(python)

转载 作者:行者123 更新时间:2023-11-28 18:15:15 25 4
gpt4 key购买 nike

我注意到在 Python 中可以使用 for 循环来模拟 while 循环(我对编码知之甚少)。然后我尝试使用两种不同的公式构建两个相同的 while 循环。在我看来,这里就是这种情况(是吗?)

# for-loop formulation
index = [0]
for a in index:
if a < 6:
index.append(a + 1)

# while-loop formulation
index = [0]
while index[-1] < 6:
index.append(index[-1] + 1)

让我感到困惑的是,我认为一旦列表索引被更新/更改,for 循环就会从头开始重新启动,因为列表可能在任何周期都发生了巨大变化。例如,如果你运行

#3
index = [0]
for a in index:
print a
if a < 6:
index.append(a+1)
if a > 3:
index = [1, 3]
print index

你得到输出

0
[0, 1]
1
[0, 1, 2]
2
[0, 1, 2, 3]
3
[0, 1, 2, 3, 4]
4
[1, 3]
5
[1, 3]

其中 a 不是最后一步中新索引 [1, 3] 的一部分。因此三个问题:

  1. 开始时两个程序#1 和#2 是否不同(例如,它们的计算量是否不同?)
  2. 程序 #3 中发生了什么(为什么在最后一步中显然忽略了“for a in index:”命令?),for 循环通常如何对更新索引的变化使用react?<
  3. 是否有关于将 for 循环用作 while 循环的通用指南(我注意到我发现它在特定情况下很有帮助,所以我想知道这方面的一些通用提示)。

最佳答案

前两个基本相同,因为它们在不同情况下会运行相同次数的迭代,并且会使 index 处于相同状态。如果将 index.append(a+1) 替换为 index.append(a),则 for 循环将永远运行;同样,如果将 index.append(index[-1] + 1) 替换为 index.append(index[-1])while code> 循环将永远运行。像这样修改您正在迭代的列表有点麻烦,但有时这是一种合理的策略。

顺便说一下,for 循环发生的事情是,当您启动它时,会创建一个迭代器,它给出 index[0],然后是 index[1],然后是 index[2],等等,直到到达不存在的 index[N]。此迭代器不知道也不关心您正在更改列表,因此如果您使列表更长,它会很乐意继续更长的时间。

在程序 #3 中,范围界定有些困惑。当您进入 for 循环时创建的迭代器不关心您是否在 for 循环内重新分配变量 index:它只是不断迭代原始列表。前几次执行 index.append(a+1) 时,确实会影响原始列表;但是一旦你执行 index = [1, 3]index 就不再引用原始列表,所以你对它做的任何事情都不会影响迭代的剩余过程.添加的最后一个值是 5,因为一旦 a 变为 4 并且 a+1 附加到index, index 被破坏了,没有更多的东西被附加到原始列表。

最后,index 的破坏在 for 循环之外持续存在:当循环完成时它将具有值 [1, 3]

关于python - for循环被用作while循环(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48778152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com