我旨在创建python循环的动态范围。我知道,将范围作为参数传递给范围生成器时,终止范围仅计算一次。但是,这个例子:
i = 1
for i in range(1,i,1):
print i
i = i +1
很明显,使用i=1
会跳过循环。但是我想以某种方式根据i
参数动态更改此范围。
这是我要使用动态范围的情况:
在每次迭代中每次都计算此重载值,并且它会更新范围。如果理论上说过载值是20,则范围将一直到20。
这是我的代码:
capacity = Router_1.get_tunnel_capacity()
tunnel_bandwidth = Router_1.check_bandwidth_overload()
if tunnel_bandwidth <= capacity:
for bandwidth in range(1, range_end, 1):
os.system('iperf -c ' + server_address + ' -u -p 50001 -b ' + str(bandwidth) + 'M -i 1')
tunnel_bandwidth = Router_1.check_bandwidth_overload()
if tunnel_bandwidth <= capacity:
# update the range_end according to tunnel_bandwidth
range_end
是范围的动态值。反正有使其动态化吗?
答案 0 :(得分:3)
使用while
循环而不是for
循环。
这是一个非常基本的示例:
z = 0
range = 10
while z < range:
print(z)
if z == 9:
range = 20
z += 1
答案 1 :(得分:2)
Rob给出的while循环答案可能是最好的解决方案,因为Python 3
中的range()函数返回的是惰性序列对象而不是列表。
但是,在Python 2
中,当您在for循环中调用range()时,它将创建一个列表。您可以保存该列表,然后对其进行变异。
类似这样的东西:
count = 10
r = range(count)
for i in r:
newcount = 7
del r[newcount:]
我不太确定如何增加尺寸,但是您明白了。
答案 2 :(得分:-1)
如果您想在range_end
循环中更改for
,则不能这样做,请尝试使用while
循环。