gpt4 book ai didi

python - Python 中的 for 循环 - 如何在循环内修改 i

转载 作者:太空狗 更新时间:2023-10-29 21:21:43 25 4
gpt4 key购买 nike

此代码是在 Jupyter Notebooks 中用 Python 3.6 编写的。在其他语言中,我很确定我构建的循环看起来像这样:

endRw=5
lenDF=100 # 1160

for i in range(0, lenDF):
print("i: ", i)
endIndx = i + endRw
if endIndx > lenDF:
endIndx = lenDF

print("Range to use: ", i, ":", endIndx)
# this line is a mockup for an index that is built and used
# in the real code to do something to a pandas DF

i = endIndx
print("i at end of loop", i)

虽然在测试中,i 不会重置为 endIndx,因此循环不会构建预期的索引值。

我能够通过构建这样的 while 循环来解决这个问题并得到我正在寻找的东西:

endRw=5
lenDF=97 # 1160
i = 0
while i < lenDF:
print("i: ", i)
endIndx = i + endRw
if endIndx > lenDF:
endIndx = lenDF

print("Range to use: ", i, ":", endIndx)
# this line is a mockup for an index that is built and used
# in the real code to do something to a pandas DF

i = endIndx
print("i at end of loop: ", i)

问题:有没有办法在 python 的 for 循环中修改 i?有没有办法在 Python 中使用 for 循环来完成我对 while 循环所做的操作?

while 解决了问题,但只是对此感到好奇。

最佳答案

可以修改 for 中的循环变量循环,问题是for Python 中的循环不像“旧式”for例如循环Java,但更像是“新式”for-each循环。

在 Python 中,for i in range(0, 10):不像for (int i = 0; i < 10; i++) { , 但像 for (int i : new int[] {0, 1, ..., 10}} .

也就是说,在循环的每次迭代中,循环头不会修改循环变量(例如增加它),而是为其分配一个新值,即给定的下一个值可迭代(在您的情况下为 range)。因此,您在上一次迭代中所做的任何修改都会被覆盖。

如果你想循环已知次数的迭代或迭代中的每个项目,使用 for循环,但是如果你想循环直到某个条件(不再)成立,就像你的情况一样,使用 while .

关于python - Python 中的 for 循环 - 如何在循环内修改 i,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50671297/

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