Python 3 range Vs Python 2 range

时间秒杀一切 提交于 2019-11-26 22:23:56

问题


I recently started learning python 3.
In python 2 range() function can be used to assign list elements.

>>> A = []
>>> A = range(0,6)
>>> print A
[0, 1, 2, 3, 4, 5]

where as in python 3 when range() function is used this is happening

>>> A = []
>>> A = range(0,6)
>>> print(A)
range(0, 6)

why is this happening?
why did python do this change?
Is it a boon or a bane ?


回答1:


Python 3 uses iterators for a lot of things where python 2 used lists.The docs give a detailed explanation including the change to range.

The advantage is that Python 3 doesn't need to allocate the memory if you're using a large range iterator or mapping. For example

for i in range(1000000000): print(i)

requires a lot less memory in python 3. If you do happen to want Python to expand out the list all at once you can

list_of_range = list(range(10))



回答2:


in python 2, range is a built-in function. below is from the official python docs. it returns a list.

range(stop)
range(start, stop[, step])
This is a versatile function to create lists containing arithmetic progressions. It is most often used in for loops.

also you may check xrange only existing in python 2. it returns xrange object, mainly for fast iteration.

xrange(stop)
xrange(start, stop[, step])
This function is very similar to range(), but returns an xrange object instead of a list.

by the way, python 3 merges these two into one range data type, working in a similar way of xrange in python 2. check the docs.




回答3:


Python 3 range() function is equivalent to python 2 xrange() function not range()

Explanation

In python 3 most function return Iterable objects not lists as in python 2 in order to save memory. Some of those are zip() filter() map() including .keys .values .items() dictionary methods But iterable objects are not efficient if your trying to iterate several times so you can still use list() method to convert them to lists




回答4:


In python3, do

A = range(0,6)
A = list(A)
print(A)

You will get the same result.



来源:https://stackoverflow.com/questions/44571718/python-3-range-vs-python-2-range

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!