所有切片列表的冒号表达式,实际上都由最基本的起始位:截止位:步幅演变而来,只是有时候会省略一些内容,让整个表达式难以一眼理解。
基本表达式
首先需要理解完整的表达式:起始位:截止位:步幅,其意思就是在左闭右开的区间[起始位,截止位)中按照步幅来对列表进行切片。结合下面的实例,这不难理解:

除此之外,Python还有非常特色的“负下标”,可以倒序访问整个列表,a[-x]便表示列表a的倒数第x个元素:

同时,步幅也不一定为正数,可以用负数来倒序切片,也可以和负下标结合起来使用:

简化表达式
了解了最基本的两种表达,接下来就是对基本表达式起始位:截止位:步幅的简化。
省略步幅
首先是对步幅的省略,这样表达式就只剩下起始位:截止位,而步幅则默认为1:

省略起始位
如果省略第一个冒号之前的数字,则起始位默认从两端开始,步幅为正时默认从0位开始,步幅为负时默认从-1位开始:

这种省略还可以和省略步幅结合在一起:

省略截止位
截止位的省略与起始位大同小异,当步幅为正时,截止位默认为-1后一位;当步幅为负时,截止位默认为0位前一位。之所以与省略起始位有所不同,在于冒号表达式都是左闭右开的,如果将截止位设为0,是无法将第一个元素囊括在切片出的列表里的,这也是少数省略表达式能做而完整表达式做不到的地方。另外,前面的省略依旧可以与它结合:

本文详细介绍了Python列表切片的使用,包括基本表达式、简化表达式以及各种省略方式。从起始位:截止位:步幅的完整表达,到步幅、起始位和截止位的省略,解析了如何通过冒号表达式实现不同需求的列表切片。同时,文章还提到了Python中负下标的特性,允许倒序访问列表,并探讨了步幅为负时的切片操作。
1235

被折叠的 条评论
为什么被折叠?



