有个小白问题,代码如下:
arr = [1,2,3,4,5,6,7,8,9,10]
print(arr[1:5])
print(arr[1:5:2])
print(arr[1:5:-2])
结果:
[2, 3, 4, 5]
[2, 4]
[]
- 第二个参数5,代表的也是索引么,如果是,就是截取到这个索引之前?可以这么理解么?
- 步长为2的时候可以取值,-2的时候为什么是空
- python列表这里索引取值,截取它的底层原理是什么,为什么会导致如上的结果
谢谢大家,已明白。代码可看已采纳的答案。
通俗易懂的话,就是 dodopy 的解释,贴下来:
明确几个信息:
1.列表的索引是从0开始
2.切片范围符合左闭右开原则
3.负数表示从右到左的顺序
4.step值默认为1
arr = [1,2,3,4,5,6,7,8,9,10]
# 从第2个(index为1)开始向右,到第4个,依次取出每个元素及按序之后第1个元素,即[2,3,4,5]
print(arr[1:5])
# 从第2个(index为1)开始向右,到第4个,依次取出每个元素及按序之后第2个元素,即[2,4]
print(arr[1:5:2])
# 从第2个(index为1)开始向左,到第4个,依次取出每个元素及按序之后第2个元素,取不到任何数据,即[]
print(arr[1:5:-2])
# 多举个例子
# 从右边第1个开始向左,开始向左,到右边第4个,依次取出每个元素及按序之后第2个元素,即[10, 8]
print(arr[-1:-5:-2]
当然list切片底层使用c实现的,比我写的效率高得多