今天在python中执行下面代码:
range(0,5)
结果仍然返回
range(0,5)
type(range(0,5))查看一下,竟然是<class 'range'>
与我想的完全不一样,我以为应该返回的是列表[0,1,2,3,4]
是哪边出现了问题呢?
各种搜索网上的答案,最终得出如下答案:
原因:python的版本不同,返回的类型不同
在python 3.x版本中,range()函数返回的是一个个对应的整数,也就是迭代对象。
我们运行help(range)得到如下结果:
| range(stop) -> range object
| range(start, stop[, step]) -> range object
|
| Return an object that produces a sequence of integers from start (inclusive)
| to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1.
| start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3.
| These are exactly the valid indices for a list of 4 elements.
| When step is given, it specifies the increment (or decrement).
前两行告诉我们,返回的是一个对象,类型为range
后面的内容告诉我们:
返回一个对象,该对象从一开始就生成一个整数序列从开头(包括开头)到结束(不包含)。即我们平常说的,包头不包尾。
例:range(i,j)产生整数 i,i+1,i+2,…,一直到j-1。
range(4)产生0、1、2、3。开头整数默认为0,结尾整数4不包含。这些正是4个元素列表的有效索引。
当给定步长时,它指定增量(或减量)。
如果我们想让它呈现出列表形式,如下即可
list(range(0,5))
结果如下:
[0, 1, 2, 3, 4]
在python 2.x版本中,range()函数返回的是列表。
在电脑中安装python2.x版本
直接运行
range(0,5)
结果如下:
[0, 1, 2, 3, 4]
总结:range()函数在python 2.x 中返回的是列表,而在python 3.x返回的是可迭代对象。
问题解决!
网友评论