当前位置: 首页 > 知识库问答 >
问题:

“范围(0,2)”和“列表(范围(0,2))”有什么区别?

邢永安
2023-03-14

两者都返回一个列表,那么到底有什么区别呢?

共有1个答案

谷梁云瀚
2023-03-14

在Python 3.x中,

range(0,3)返回一个不可变的可迭代对象类,允许您遍历它们,它不生成列表,它们也不将范围内的所有元素存储在内存中,而是动态生成元素(在遍历它们时),而list(range(0,3))生成列表(通过遍历所有元素并在内部追加到列表中)。

示例--

>>> range(0,3)
range(0, 3)
>>> list(range(0,3))
[0, 1, 2]
>>> range(0,10)[5]
5
>>> range(0,10)[3:7]
range(3, 7)
>>> 5 in range(6,10)
False
>>> 7 in range(1,8)
True
In [11]: %timeit a = xrange(0,1000000)[1000]
1000000 loops, best of 3: 342 ns per loop

In [12]: %timeit a = xrange(0,1000000)[10000]
1000000 loops, best of 3: 342 ns per loop

In [13]: %timeit a = xrange(0,1000000)[100000]
1000000 loops, best of 3: 342 ns per loop

In [14]: %timeit a = xrange(0,1000000)[999999]
1000000 loops, best of 3: 342 ns per loop

In [15]: %timeit a = xrange(0,10000000)[9999999]
1000000 loops, best of 3: 339 ns per loop

In [16]: %timeit a = xrange(0,1000000000000)[9999999999]
1000000 loops, best of 3: 341 ns per loop
 类似资料:
  • 问题内容: 需要了解的区别和使用python2.7 两者都返回一个列表,那么到底有什么区别? 问题答案: 在Python 3.x中, 返回一类不可变的可迭代对象,它使您可以对其进行迭代,它不生成列表,并且它们不将范围内的所有元素存储在内存中,而是在运行时生成元素(当您对其进行迭代时) ,而产生一个列表(通过遍历所有元素并在内部追加到列表中)。 范例- 理想情况下,如果只想遍历该值的范围,则速度会更

  • 问题内容: 我在书中看到了一段代码,内容如下: 范围和块都一样吗? 问题答案: 作用域是您可以引用变量的地方。块定义了一个变量,该变量在一个块内部定义,将仅在该块内部定义,并且在块结束后不能引用它。 因此,在这段代码中,如果您尝试执行以下操作: 因为这里拥有的是局部作用域 ,所以java中的其他种类的作用域都是(例如),所以类的成员具有类作用域,因此可以在类内部的任何地方访问它。 范围的基本规则是

  • 在请求范围中,bean被定义为HTTP请求,而在会话范围中,bean被定义为HTTP会话。例如, 如果bean范围是请求,并且用户在其用户会话中对网页发出多个请求,则在每个请求上都会创建一个新bean。 而如果范围被定义为bean的会话,如果用户多次请求网页,则在每次请求时都会返回相同的bean。 请让我知道这种理解是否正确?

  • 问题内容: 我已经仔细阅读了有关该主题的 AngularJS 文档,然后摆弄了一条指令。这是jsfiddle。 以下是一些相关的摘要: 从 HTML : 从窗格指令: 我没有几件事: 为什么必须与和一起使用? 我是否还可以直接访问父范围,而不用属性装饰元素? 该文档说: “通常希望通过表达式将数据从隔离的范围传递到父范围” ,但这似乎也可以与双向绑定一起使用。为什么表达途径会更好? 我发现了另一个

  • 我仔细阅读了关于这个主题的AngularJS文档,然后随意修改了一个指令。小提琴在这里。 下面是一些相关的片段: > 来自HTML: 在窗格指令中: 有几件事我不明白: 为什么必须使用与和与? 是否也可以直接访问父范围,而不使用属性装饰元素? 文档说“通常希望通过表达式将数据从独立作用域传递到父作用域”,但这似乎也适用于双向绑定。为什么表达式路由会更好? 我找到了另一个显示表达式解的fiddle:

  • 问题内容: Ada,Pascal和许多其他语言都支持范围,这是对整数进行子类型的一种方式。范围是一个有符号整数值,范围从一个值(第一个)到另一个值(最后一个)。实现一个在OOP中执行相同操作的类很容易,但是我认为本机支持该功能可以使编译器进行其他静态检查。 我知道无法静态地验证范围内定义的变量不会“溢出”运行时(即由于输入错误),但是我认为可以做些什么。我考虑了按合同设计方法(Eiffel)和Sp