什么叫切片呢?
我们把每个列表元素当成是“一片”,可以根据索引任意取一片,或者多片,甚至是全部。这种方法叫切片。
语法:list[index1:index2:step]:index1,index2为起始区间,也可以单独使用,
step为步长,即隔多长取一个,默认为1
下面我们来看看切片的集中方式。
1,正数使用情况(即正常使用情况)
lis = ["a", "b", "c", "d", "e", "f", "g"]
#正数使用情况(从左往右取值)
print(lis[:])
print(lis[1:])print(lis[1:5])
print(lis[:5])
print(lis[:5:2])
通过参考输出就很容易理解是什么意思。不再赘述。
2,index为正数,步长为负数的情况
注意:步长不能为0,否则报错。
3,使用负数(从右到左)
一,因为没有-0的说法,所以从右到左,-1就代表了第一个元素
二,从上面的例子应该看出,所有的索引值都是包头不包尾,即不会去匹配结束位置的那个值。
三,反向取值(index左值大于右值),step要改为负数才合法,如下:
print(lis[-1:-8:-1])
四,默认情况下,index左边值要小于右边值,否则取不到值。
其中三,四点不适合用于正负混合的情况,且刚好相反。且看下面。
4,正负混合
讨论一种情况:lis[1:-5]
参考上面的图,我们得知正负混合的默认情况下,左值比右值大时,两者之间必须有一个元素隔开,否则也是取不到值的。这种情况属于不包头也不包尾。
5,连续切片
理解:
第一次切片=['a', 'b', 'c', 'd', 'e']
第二次切片=['b', 'c', 'd']
第三次切片=['c', 'd']
tips:理论上只要可切(列表非空),就无限可切。
6,三个参数可以是表达式,返回值是整数即可:
7,超出索引值的情况
从以上图可以得知,在合法的情况下,超出索引值范围不会报错,只是取不到值而已,返回空列表。
8,字符串,元组都可以进行切片,方法是一样的,自行练习。
9,插入元素
注意位置的形式:两个数字必须相同,否则就是另外一个意思了。
10,替换
替换很有意思,特别是后面的那个数字。下面几个图来对比下就知道到底是什么情况了。
一,只有index1的情况下,index=0表示用["1","2","3"]替换整个列表;index=1,2,3......的情况表示用["1","2","3"]替换该索引值(不包含)后面的所有值。
二,有index1,index2的情况。
1,index1 <=index2时,表示从index1位置插入值
2,index1 > index2表示从index1开始替换值,被替换的值由替换值和index2共同决定。规则如下:
1,index2值<=替换值的个数(图中index2=2,3的情况),则直接插入替换值
2,index2值 > 替换值的个数(图中index2=4,5的情况),要删除原列表的元素。被删除的个数为:index2-替换值的个数
这篇文字比较多,但其实只要根据图片中的去操作了,还是很好理解的。
-------------------------------------------------------------------
还是有疑惑,可以加wx(mirror2013520)