Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么一个范围有“功能”;计数;?_Python_Range - Fatal编程技术网

Python 为什么一个范围有“功能”;计数;?

Python 为什么一个范围有“功能”;计数;?,python,range,Python,Range,除非我弄错了,否则范围只能包含唯一的数字。所以,里面可能有数字,也可能没有 我想只有当我们想将一个范围作为许多可接受类型(动态)中的一种传递给某个函数时,它才有意义 然而,似乎如果它将在整个范围内计算一个数字,它将是非常低效的 我试图将它与中的“”进行比较,但在我的机器上,它们似乎有相同的计时。这是对的吗?因为range()对象符合,而且ABC有一个.count()方法 换句话说,它是为了完整性而存在的,因此对象 它不必跨越整个范围,因为计算数字是否是序列的一部分非常容易,请参见是否可以查看它是

除非我弄错了,否则范围只能包含唯一的数字。所以,里面可能有数字,也可能没有

我想只有当我们想将一个范围作为许多可接受类型(动态)中的一种传递给某个函数时,它才有意义

然而,似乎如果它将在整个范围内计算一个数字,它将是非常低效的

我试图将它与中的“
”进行比较,但在我的机器上,它们似乎有相同的计时。这是对的吗?

因为
range()
对象符合,而且ABC有一个
.count()
方法

换句话说,它是为了完整性而存在的,因此对象


它不必跨越整个范围,因为计算数字是否是序列的一部分非常容易,请参见

是否可以查看它是否意识到一旦找到匹配,它就可以停止?似乎是这样的,因为时间与“in”相似。哇,当然,它只需要比较最小值和最大值……嗯。。。愚蠢的问题。这个答案非常有用:我更喜欢range。为了完整性,当你在range对象上执行
时,CPython会调用它。这似乎是O(1)时间。并且是
.count
,如果参数是整数或布尔值,它只调用contains函数。大多数时候它也是O(1)。它是否必须跨越整个范围取决于搜索的值。例如,
range(10**8).count(0.)
需要几秒钟才能返回
1
@superbrain,这是因为您传递了一个float。请参见我的,只有整数触发快速计算路径。