python explode(0、0.2、0、0)_python – “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()函数,它具有与Python 3.x的range()函数相似的行为(xrange被重命名为Python 3.x中的范围) )

对于Python 3.5,从documentation –

Range objects implement the collections.abc.Sequence ABC, and provide features such as containment tests, element index lookup, slicing and support for negative indices

所以你可以做这样的事情 –

>>> 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值