python的切片详解
什么是切片
顾名思义,切片做的事情在已知的数据上取出想要的部分。切片是在可迭代对象的基础上,取出任意长度的元素,同时取得范围、频次也是可以自定义的
切片是取操作,不改变原值
哪些类型的数据支持进行切片操作
list,tuple,string 可迭代对象都支持切片的操作。
本文主要以list类型为代表进行实例讲解。
切片的操作参数详解
【start: end: step】
切片的start 和end 中指的是索引,step指的是间隔。
1. start和end可以是任意值,即可以超出下标 ,超出下标后不报错,切的值为空。
2. 切值返回的类型同样受到原值的影响。
即如果在tuple上进行,返回的切片内容由() 进行包围。
list1=[0,1,2,3,4,5,6]
one=list1[ 8:100]
print("切片超出下标范围取值为:%s"%one) 切片超出下标范围取值为:[]
进行第一个切片操作
1. [0,1] 切的是第一个元素,和其他一样包含头部,不包含尾部。
2. 在这个切片操作过程中,step为空时,代表这个参数值为1,同时它有2层含义。
1.切片的过程为正序,需要满足start<end
2.切片的间隔为1,顺序执行。
list1=[0,1,2,3,4,5,6]
one=list1[ 0:1]
print("切片第一个元素【0:1】%s"%one) #切片第一个元素【0:1】[0]
什么是正序切片?
切片的正序需满足start的位置在end位置的左边。
下面是除了正数到正数外的满足正序的其他方式切片。
list1=[0,1,2,3,4,5,6]
two=list1[3:-1]
print("切片正序实现从正数数到负数的切%s"%two)
#切片从正数到负数的切[3,4, 5]
list1=[0,1,2,3,4,5,6]
two=list1[-3:-1]
print("切片正序实现从负数到负数的切%s"%two)
#切片从负数到负数的切[4, 5]
list1=[0,1,2,3,4,5,6]
two=list1[-6:5]
print("切片正序实现从负数到负数的切%s"%two)
#切片从正数到负数的切[1, 2, 3, 4]
什么是倒序切片?
切片的倒序需满足start的位置在end位置的右边。
留给大家一个练习,怎样进行一个倒序的切片。
```python
补充倒序切片:
ll=[0,1,2,3,4,5,6,7,8,9]
print(ll[-1:3]) 结果 :[]
print(ll[-1:3:-1]) 结果:[9, 8, 7, 6, 5, 4]
print(ll[-1:3:-2]) 结果:[9, 7, 5]
**
解析: 首先从第一个参数和第二个参数来说,他们分别代表可迭代对象的右边界和左边界。对应列表中的数字9,4;
关键是第三个参数step。必须要求这个数为负数,然后从右到左开始进行取值。如果为正数时,取到的是一个空列表
**