基本的Python范围和切片不起作用

时间:2016-09-22 20:39:04

标签: python python-3.x range slice

有人能解释一下这里发生了什么吗? 切片似乎关闭不是吗? 在交互式shell上执行此操作。

>>> range(3,100,7)[0:5]
range(3, 38, 7)

2 个答案:

答案 0 :(得分:3)

range(3, 100, 7)会返回range个对象。 range对象理解切片。请注意,list(range(3,100,7))[0:5]list(range(3,38,7))

相同

答案 1 :(得分:2)

因为python3 range()输出它自己的类型,并且理解切片:

>>> range(100)[5:10]
range(5, 10)

如果您想这样使用它,您必须将其转换为列表:

>>> list(range(100))[5:10]
[5, 6, 7, 8, 9]

所以这也可行,并且在性能方面可能更好:

list(range(100)[5:10])
[5, 6, 7, 8, 9]