Python 3:
string = range(10) print("{}".format(type(string)))
字符串输出:
class 'range'
型我只是好奇这个职业的范围。谁能解释一下?Python 2:输出:
class 'list'
型这是不言自明的
wbgh16ku1#
Python 3添加了一个新的range类来有效地处理“不可变的数字序列”(类似于Python 2的xrange)。Python 2没有这样的range类,所以range函数只是返回一个列表。
range
xrange
eanckbw92#
在Python 2中,range(val)生成一个列表的示例,它只是一个函数。因此type(range(10))将返回class 'list'。在Python 3中,range相当于Python 2中的xrange,它返回一个名为range的新类的示例。有关Python 2/3之间的更多更改/差异,请参阅PEP 3100。
range(val)
type(range(10))
3
PEP 3100
mepcadol3#
Python 3的主要区别(摘自https://docs.python.org/3/library/stdtypes.html#range)range类型相对于常规列表或元组的优点是,range对象将始终占用相同(少量)的内存,无论它表示的范围大小如何(因为它只存储开始,停止和步长值,并根据需要计算单个项和子范围)。
3条答案
按热度按时间wbgh16ku1#
Python 3添加了一个新的
range
类来有效地处理“不可变的数字序列”(类似于Python 2的xrange
)。Python 2没有这样的range类,所以range
函数只是返回一个列表。eanckbw92#
在Python 2中,
range(val)
生成一个列表的示例,它只是一个函数。因此type(range(10))
将返回class 'list'
。在Python
3
中,range
相当于Python 2中的xrange
,它返回一个名为range
的新类的示例。有关Python 2/3之间的更多更改/差异,请参阅PEP 3100
。mepcadol3#
Python 3的主要区别(摘自https://docs.python.org/3/library/stdtypes.html#range)
range类型相对于常规列表或元组的优点是,range对象将始终占用相同(少量)的内存,无论它表示的范围大小如何(因为它只存储开始,停止和步长值,并根据需要计算单个项和子范围)。