计算范围内的项目

时间:2018-08-23 20:33:08

标签: python python-3.x range

p1 = (0, 10, 1)
p2 = (0, -20, -2)
p3 = (0,10,2)

嗨,

我有上面的代码,我只是想要一种快速的方法来计算每个范围内有多少项而无需遍历它? (它是一些嵌套循环的一部分)。因此p1将返回9。

还有更好的方法将这些变量传递给range函数吗?

现在我在起诉:

range(p1[0], p1[1], p1[2])

4 个答案:

答案 0 :(得分:9)

>>> p1 = (0, 10, 1)
>>> len(range(*p1))
10

range对象很聪明,不需要迭代就可以计算长度。

答案 1 :(得分:2)

这样做的好处是您不必创建新的对象即可进行计算。

def c(p):
  return max((p[1] - p[0]) // p[2], 0)

c(p1)

10

答案 2 :(得分:1)

也许简单的数学?只需计算开始和停止之间的差,并避免步长大小。然后,从结果中减去一个

((p[1]-p[0])/p[2]) - 1

答案 3 :(得分:0)

这是使用unpacking operator *的好例子。如果您有p1 = (0,10,1),则必须解压缩元组p1以便将其元素作为range函数的参数传递。然后,您可以使用len函数来获取范围的长度,如下所示:

print(len(range(*p1)))  # 10