访问范围大小for for循环?

时间:2017-04-30 16:29:56

标签: python for-loop

我有一个简化的python代码,如下所示:

a = 100
x = 0
for i in range(0, a):
    x = x +  i / float(a)

有没有办法在for循环中访问最大迭代次数?

基本上代码会改为:

x = 0
for i in range(0, 100):
    x = x + i / float(thisloopsmaxcount)

其中thisloopsmaxcount是一些奇特的python方法。 另一个选择是为这种行为实现一个完整的类。

3 个答案:

答案 0 :(得分:1)

是的,你可以......

a = 100
x = 0
r = range(0,a)

for i in r:
    x = x + i / r.stop

但是如果范围不是1,2,3 ...那么stop不会是步数,例如range(10,12)没有12个步骤,它有2个步骤。并且range(0,100,10)计入数十,所以它没有100步。因此,您需要在适当的时候考虑(.stop - .start) / .step

它只适用于范围,通常一个for循环可以从网络读取,或者基于用户输入的东西,其中唯一的方法来知道循环何时停止以及循环多少循环碰巧到了最后。

答案 1 :(得分:1)

没有任何内置功能,但您可以自行轻松计算:

x = 0
myrange = range(0, 100)
thisloopsmaxcount = sum(1 for _ in myrange)
for i in myrange:
    x = x + i / float(thisloopsmaxcount)

答案 2 :(得分:0)

在您的示例中,您已经知道迭代次数,所以为什么不使用它。

但总的来说,如果你想要(Python 3)Winrar中的元素数量,可以使用len()

range()

你仍然需要临时变量,因为它不是知道长度的循环本身,而是x = 0 rang = range(12,999,123) for i in rang: x = x + i / float(len(rang)) 对象。 range也适用于Python 2' xrange