【发布时间】:2020-05-10 07:37:17
【问题描述】:
我想要一个 Python 程序,比如——
for i in range(r):
if (i==2):
#change r in some way
在 if 语句中修改后,它将为新范围 r 运行循环。
即使我在 if 语句之后更改 r,for 循环也会针对我给出的初始 r 运行。这一定会发生,因为 range(r) 在第一行本身的 for 语句中得到固定,并且不受稍后更改 r。
有没有“简单的方法”绕过这个?
“简单”是指我不想添加一个计数器来计算循环已经运行了多少次,以及在更改(特别是增加)r 后需要再次运行多少次,或者通过替换 for 循环带有一个while循环。
【问题讨论】:
-
使用 while 循环和手动计数器是他要走的路。你不能改变
r -
记住:在 Python 中参数是按值传递的(参见“对象共享调用”)。函数被赋予 r 的 当前值(即 r 立即作为表达式求值),否则与用作参数的变量没有关联。
-
不像其他人所说的那样使用while循环,我认为很可能有更好的选择来解决这个问题。您能否通过向我们展示您想要实现的目标来扩展您的帖子?也许python索引已经可以帮助你? >>> x = [1,2,3] >>> x[2] = 5 >>> x [1, 2, 5]
-
如果想为这样的一般请求编写一些复杂的代码,而不是简单的计数器,它可能看起来像这样:r = 3; g = my_generator(r);对于 i 在 g 中;如果 i == 2:g.set_max(42)。 my_generator 使用属性来维护状态。同样,为了巩固一点,r 从未传递给 my_generator 函数/构造函数:值 3 是。
-
@Dremet 我正在为没有重复的随机游走问题编写代码,所以我需要检查之前是否访问过新点。如果当时访问过,我们需要拒绝该点对吗?所以那一步从未发生过,但最初我以固定数量的步数开始,所以每次我不使用一个点时,我都不希望我增加。添加主代码可能会惹恼一些用户,因为它既不匹配标题,也不匹配标签(它将成为科学计算问题)。并且还可能导致问题以“离题”而结束。
标签: python python-3.x loops for-loop if-statement