作为初学者,我们经常会遇到有关序列 [-1:],[:-1],[::-1] 等切片操作,往往傻傻搞不清,甚至懵圈,如何正确理解并自如使用呢?
首先复习一下序列的有关属性。
序列是 Python 最基本的数据结构,衍生字符串、列表、元组等数据类型,其中的每个元素都有对应的位置值,具有正向递增( 0 开始),反向递减( -1 开始)之属性,据此可以进行切片或索引等操作:
操作符 | 描述 |
---|---|
s[i] | 索引,返回序列 s 中的第 i 个元素,i 为序号 |
s[i:j] | 切片,返回序列 s 中从序号 i 到 j(不包括j)的元素子序列 i 缺省时,默认为 0 j 缺省时,默认为 len(s) i、j 均缺省时,默认为全部 |
s[i:j:k] | 切片,返回序列 s 中从序号 i 到 j(不包括j),以 k 为步长的元素子序列 k > 0,步长自左而右(正序);缺省时,默认为 1 k < 0,步长自右而左(倒序);i 缺省时,默认为 -1;j 缺省时,默认为 -len(s)-1 |
示例:
>>> s = ('Life', 'is', 'short', 'you', 'need', 'Python')
>>> print(s[1])
is
>>> print(s[:])
('Life', 'is', 'short', 'you', 'need', 'Python')
>>>print(s[-1:])
Python
>>> print(s[:-1])
('Life', 'is', 'short', 'you', 'need')
>>> print(s[::-1])
('Python', 'need', 'you', 'short', 'is', 'Life')
>>> print(s[::-2])
('Python', 'you', 'is')
>>> print(s[2::-1])
('short', 'is', 'Life')
释义:
s[1] 表示序列 s 的第 1 个元素
s[:] 表示序列 s 的全部元素
s[-1:] 相当于 s[-1:6] 表示序列 s 的第 -1 个元素,也即最后一个元素
s[:-1] 相当于 s[0:-1],表示序列 s 自始至最后一个元素前的所有元素
s[::-1] 相当于 s[-1:-7:-1],表示序列 s 自尾而首的所有元素,即倒序
s[::-2] 表示倒序,步长为2
s[2::-1] 表示自第 2 个元素始倒序
关于序列的更多知识总结,请参见:
Python 序列之三言两语序列是具有先后关系的一组元素...https://blog.csdn.net/iprobobo/article/details/122542937