【Python教程】列表不是贪吃蛇,是贪吃蚯蚓?列表切片

蚯蚓一家这天很无聊,小蚯蚓就把自己切成两段打羽毛球去了,蚯蚓妈妈觉得这方法不错,就把自己切成四段打麻将去了,蚯蚓爸爸想了想,就把自己切成了肉末。蚯蚓妈妈哭着说:"你怎么这么傻?切这么碎会死的!"蚯蚓爸爸弱弱地说:"……突然想踢足球……"

大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。

在上一期我们以一局贪吃蛇作为例子,讲解了列表对象的各种方法。但是这些方法还不能满足我们的需求。有时候我们会需要从列表中截取一部分作为一个新的列表使用,那之前的列表方法就不太管用了,而这时候我们就需要一种新的操作,叫列表切片。我们还是以实例来讲解这种操作

我们再新建一个列表:

如果我们需要满汉全席的第二道菜,怎么操作大家应该知道(从零开始从零开始):

那如果我们需要第二道菜到第五道菜呢?其实跟这个用法差不多,只要在索引值后边加一个冒号,加一个5就可以了:

冒号前边的被称为起点索引值,冒号后边的被称为终点索引值

诶等等,不是强调了这么多遍从零开始吗?怎么第五道菜索引值成了5?

其实在切片的用法中,这个终点索引值减一才是会被选取到的范围。就好比说,你从一楼爬到五楼,爬了几层楼梯?

所以大家在使用切片的时候一定要注意切片范围的选择,注意避开这个坑。

同时我们也可以看到,列表切片得到的结果还是列表,这就像是把蚯蚓切成两段还是蚯蚓一样。

有时候我们并不知道列表有多长,我想截取倒数第四到倒数第二个元素,该怎么写呢?其实,索引值可以是负数:

-4就是倒数第四,而-1呢,想一想刚才的坑。

那问题就来了,如果我想要倒数第四到倒数第一个,冒号后边应该怎么写,写0吗?我们试试:

咋啥都没了?看来这种方法不可行。实际上,这种到头的操作(不管是从头开始还是到末尾结束)都可以不写索引值:

还有一种情况,我们不想一下子把整个一段列表都截出来,而是想让里边的元素一个隔着一个被截出来,那我们就需要多加一个冒号了:

不是一个隔着一个吗,怎么是2呢?其实第二个冒号后边的值指的是步长。步长该怎么理解呢:

想象我们是采蘑菇的小姑娘,从列表里把元素“采”走。如果我们把步长设为1,那我们每走过一个元素就会把身边的元素采走,这样就没有间隔了,可见我们之前没有输入步长的时候步长是默认为1的。如果我们把步长设为2,那我们每走过两个元素就会把身边的元素采走,这样每一步都会漏一个,间隔就有了。

如果想省事点记,可以直接把步长设置为间隔+1。

从结果上来看,采蘑菇的小姑娘在没有迈步的时候就先采了一个元素,所以千万记住这个过程是先采再走。

那可不可以倒着走呢?当然也可以,用负数就行:

咋又啥都没有?

注意注意,大坑来了!

起点索引值和终点索引值都是指的元素的位置。如果起点在左边,终点在右边,我们应该从左往右走。而默认的步长为1,证明步长的方向就是从左向右的。而我们这时如果设定步长为负数,即方向是从右向左,那我们该怎么走,环绕地球吗?

这时候就应该设置起点在右边,终点在左边,步长为负数,从右向左,才能有结果。

但问题又来了,如果我的起点或者终点没设值,那该怎么办?这种情况下,这个没被设定的值是左边的头还是右边的头,就取决于步长的方向了:

可以看到,虽然我们没有为终点指定值,但Python已经判断出它是左边的端点了。

切片还有个功能,可以批量更改原先列表里的元素。比如我觉得第二道菜到第五道菜都不好,我要给他换成煎饼馃子:

但是如果把切片赋值给别的变量,再去修改变量的值就不行了:

为什么?因为变量被重新赋值了呀!

刚刚我们说到,列表的切片还是列表。这不由得让我们萌生了套娃的想法,切片可以套娃吗?也可以!

只要往后边加方括号就可以了~

这一期我们了解了列表切片的用法。切片这里起点终点步长的设置是一个容易引起混乱的点,本期的内容一定要多看几遍,并且亲自动手写一写代码练习一下如果这篇文章对你有所帮助,希望能帮室长点个赞和在看,你的鼓励是室长进步的动力!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值