栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

“ range(0,2)”和“ list(range(0,2))”之间有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

“ range(0,2)”和“ list(range(0,2))”之间有什么区别?

在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,3)
则速度会更快,
(list(range(0,3))
因为后者在开始遍历之前有产生列表的开销。

在Python 2.x中,

range(0,3)
产生一个列表,相反,我们还有一个
xrange()
函数,其行为
range()
与Python
3.x类似(xrange在Python 3.x中被重命名为range)。

对于Python 3.5,从文档中-

范围对象实现collections.abc.Sequence ABC,并提供诸如包含测试,元素索引查找,切片和对负索引的支持等功能

因此,您可以执行以下操作-

>>> 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 loopIn [12]: %timeit a = xrange(0,1000000)[10000]1000000 loops, best of 3: 342 ns per loopIn [13]: %timeit a = xrange(0,1000000)[100000]1000000 loops, best of 3: 342 ns per loopIn [14]: %timeit a = xrange(0,1000000)[999999]1000000 loops, best of 3: 342 ns per loopIn [15]: %timeit a = xrange(0,10000000)[9999999]1000000 loops, best of 3: 339 ns per loopIn [16]: %timeit a = xrange(0,1000000000000)[9999999999]1000000 loops, best of 3: 341 ns per loop


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/614189.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号