关于列表切片遇到的一些问题和知识

本文探讨了Python中列表切片的使用,特别是对list[0:2][::-1]操作的解释。解释了列表切片的多重应用,以及为何list[0:2:-1]无法得到预期结果。同时澄清了切片操作的正确理解,即a:b:c中a是起始元素(包含),b是不包含的结束元素,c是步长。
摘要由CSDN通过智能技术生成

文章目录

  • 一、问题
  • 二、结论
  • 三、一些知识点、用法总结

一、问题

今天在学习程序的时候,发现了一种对列表的切片操作:list[0:2][::-1],其中list=[1,2,3],输出结果是[2,1]。

>>> a=[1,2,3]
>>> a[0:2][::-1]
[2, 1]

对此我产生了两个疑问:

1.list[..][..]这种形式是什么意思?

2.为什么不用一个[..]来输出同样的结果?比如用list[0:2:-1]输出上述结果?


二、结论

1.list后接多个[..]可以看做 依次对list这个列表进行切片操作,如:

>>> a=[0,1,2,3,4,5,6,7,8,9]
>>> a[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[0:8]
[0, 1, 2, 3, 4, 5, 6, 7]
>>> a[0:8][2:6]
[2, 3, 4, 5]
>>> a[0:8][2:6][1:]
[3, 4, 5]

2.对于list=[1,2,3],list[0:2:-1]的结果是:

>>> a=[1,2,3]
>>> a[0:2:-1]
[]

 正确的写法应该是:

>>> a=[1,2,3]
>>> a[1::-1]
[2, 1]

这是因为我一直没搞清楚[a:b:c]的含义,我一直以为切片切出来的数值是从列表中(从左向右数)第a个(闭)到第b个(开),步长为c。而正确的含义应该是:a是开始的切的第一个元素(闭)  b第一个不被切到的元素(开),步长为c。

按我原先的理解从左到右取是没问题的,但是从右到左就不行了,所以才会出现这种错误的想法。

三、一些知识点、用法总结

不想写了,直接看大佬的知识点总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值