为何Python中用range定义的变量经type函数检测显示为list?
关于Python2中
range()返回list类型的解答 这其实是Python 2和Python 3在range实现上的差异导致的,完全不是你遗漏了什么哦 😊
在Python 2.7里,range()函数的设计就是直接返回一个列表(list),所以你执行x = range(3)后,用type(x)检测得到<type 'list'>是完全符合预期的——此时x就是[0, 1, 2]这个实实在在的列表对象。
如果你想要类似Python 3中range那种「懒加载」的可迭代对象(不会立即生成整个列表,而是在迭代时逐个生成元素,更节省内存),在Python 2里要使用xrange()函数,它返回的是xrange类型的对象:
x = xrange(3) print(type(x)) # 输出 <type 'xrange'>
到了Python 3,官方做了统一:把xrange改名为range,同时移除了原来Python 2中返回列表的range,所以Python 3里range()返回的是range类型对象,而非列表。
举个直观的对比示例(Python 2环境下):
# 使用range() a = range(3) print(type(a)) # <type 'list'> print(a) # [0, 1, 2] # 使用xrange() b = xrange(3) print(type(b)) # <type 'xrange'> print(b) # xrange(3)
内容的提问来源于stack exchange,提问作者D Singh
相关产品推荐
相关产品推荐

