8 list切片_P018 python基础:数据类型之列表切片02

什么叫切片呢?

我们把每个列表元素当成是“一片”,可以根据索引任意取一片,或者多片,甚至是全部。这种方法叫切片。

语法:list[index1:index2:step]:index1,index2为起始区间,也可以单独使用,

step为步长,即隔多长取一个,默认为1

d8a2afce85e136647cbf49157fc0e15d.png

下面我们来看看切片的集中方式。

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])

6146c818effe1d1eabd430764092abb5.png

通过参考输出就很容易理解是什么意思。不再赘述。

2,index为正数,步长为负数的情况

f7692c2973f3c1175141e5daf3422af9.png

注意:步长不能为0,否则报错。

3,使用负数(从右到左)

62a34c20d3451e2892a38d9196de609c.png

一,因为没有-0的说法,所以从右到左,-1就代表了第一个元素

二,从上面的例子应该看出,所有的索引值都是包头不包尾,即不会去匹配结束位置的那个值。

三,反向取值(index左值大于右值),step要改为负数才合法,如下:

print(lis[-1:-8:-1])

四,默认情况下,index左边值要小于右边值,否则取不到值。

其中三,四点不适合用于正负混合的情况,且刚好相反。且看下面。

4,正负混合

685b5a05a553403fd915c424f82bb77e.png

讨论一种情况:lis[1:-5]

780a1ab544672a7aad9c82af8b2fc35e.png

7cbf19cdd15f2dc776c12339aefcc8be.png

参考上面的图,我们得知正负混合的默认情况下,左值比右值大时,两者之间必须有一个元素隔开,否则也是取不到值的。这种情况属于不包头也不包尾。

5,连续切片

1ec165b0e6cae331b70041da3b544ffa.png

理解:

第一次切片=['a', 'b', 'c', 'd', 'e']

第二次切片=['b', 'c', 'd']

第三次切片=['c', 'd']

tips:理论上只要可切(列表非空),就无限可切。

6,三个参数可以是表达式,返回值是整数即可:

e62605b45d3dc795dc21230b9c59c6fe.png

7,超出索引值的情况

4ba5b4b85b0383f52161e78db87e1ad8.png

从以上图可以得知,在合法的情况下,超出索引值范围不会报错,只是取不到值而已,返回空列表。

8,字符串,元组都可以进行切片,方法是一样的,自行练习。

9,插入元素

f36eef163ce3c1cb1b9663936d766815.png

注意位置的形式:两个数字必须相同,否则就是另外一个意思了。

10,替换

替换很有意思,特别是后面的那个数字。下面几个图来对比下就知道到底是什么情况了。

8bbfed23ebf887621f0f6a6268252220.png

4f4445a423e9207dd1e274f877397674.png

9fee429641aab65de07aeecac7a67449.png

6816af7472568d4061034dd346b3f6e8.png

95a9ed70f9e3788faabb7a3f932a15a3.png

87bb95621485f81628411400787dcc7e.png

359c20ba46da7d71cd90fa86b51a465a.png

701f6114c6d15b7034cb3c4f3c63a2e5.png

一,只有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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值