|
|
1
2301
巨蟒3
所以至少,你的
这还缺了几件事那真的
我还简化了
* 接近 |
|
2
891
最根本的误解是
你可以很容易地看出:
如果它是一个生成器,迭代一次会耗尽它:
什么
这意味着它必须遵循所有的规则,成为一个序列:
两者之间的区别
但语言中似乎没有 保证 没有 包括在内。)
|
|
3
401
source ,卢克!
例如,
下面包含完整的C代码,由于内存管理和引用计数的详细信息,它有点冗长,但基本思想是这样的:
这个想法的“核心”在 the line :
|
|
|
4
154
为了补充Martijns的答案,这是 the source (在C语言中,range对象是用本机代码编写的):
所以
如果不是
整个逻辑可以这样翻译成pseudo Python:
|
|
5
113
如果你想知道
为什么?
此优化已添加到
首先,正如Ashwini Chaudhary发现的,
issue 1766304
同时:
原来,
Abstract Base Classes
PEP,重要的是要弄清楚哪些内置类型应该标记为实现哪些abc,以及
所以,有两次机会将这个优化后传到2.7,但是都被拒绝了。
*事实上,你甚至可以通过索引免费获得迭代,但是
in 2.3
**第一个版本实际上重新实现了它,并且得到了错误的细节,例如,它会给你带来
|
|
|
6
50
其他答案已经很好地解释了这一点,但我想提供另一个实验来说明靶场物体的性质:
如您所见,range对象是一个记住其范围并可以多次使用的对象(即使是在迭代它时),而不仅仅是一次性生成器。 |
|
|
7
30
都是关于
懒惰的方法
对评估和一些
额外优化
属于
顺便说一下,你的整数不是那么大,考虑一下
由于优化-它很容易比较给定的整数与最小和最大范围。
(在这种情况下,在
您应该了解实现细节,但不应依赖于它,因为这可能在将来发生变化。 |
|
|
8
20
太长,读不下去了
也
实现
|
|
|
9
2
|
|
|
10
1
尝试
|
|
|
11
0
TLDR; |
|
|
bill999 · 如何创建显示观察值所处百分位数范围的变量 1 年前 |
|
pie · 如何减小python中for循环的范围? 2 年前 |
|
|
ForEverNewbie · 筛选时间段在另一行时间段内的行 2 年前 |
|
Pia · 如何使用aggregate()进行分组 2 年前 |
|
|
Malte · 如何为多行和多个范围中的值分配点值 2 年前 |