中的切片容易混淆,这里总结一下自己的看法
重点:区间取值规则:左闭右开
1.简单切片(simple_slicing)
表达式:s[begin : end]
s表示任何的对象
begin和end必须是int值或求值后可以得到int值的表达式
备注:
a:begin和end都可以被缺省,此时,它们的默认值分别是0和sys.maxint
b:begin和end的值可以超过序列的实际长度,如s =
[1, 2, 3]; s[0 : 8]也是合法的
c:begin和end均可以为负值
2.扩展切片(extended_slicing)
表达式: s[begin : end : stride]
stride: 表示方向和步数,“+”表示从左向右走,“-”表示从右向左走
3.示例
>>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> numbers[5:0:-1] ## -1表示从右向左,从第5个开始向左数到第0个,但不包括第0个
[5, 4, 3, 2, 1]
>>> numbers[5:4:-1] ##-1表示从右向左,从第5个开始向左数到第4个,但不包括第4个
[5]
>>> numbers[:3:-1] ##等价于s[9:3:-1]
[9, 8, 7, 6, 5, 4]
>>> numbers[0:3:-1] ##-1表示从右向左,从第0个向左数,所以为空
[]
>>> numbers[9::-1] ##等价于s[9:0:-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> numbers[::2] ##等价于s[0:9:2]
[0, 2, 4, 6, 8]
来源: http://www.bubuko.com/infodetail-1947767.html