Python切片符号(:)用法及示例

时间:2022-06-01 19:16:42

Python的切片符号语法

s[start:end:step]
  • s:被切片的对象
  • start:切片迭代的起始索引
  • end:切片迭代的终止索引,但end索引不包含在切片内
  • step:切片步长

其中,start,end和step都可以被忽略。

切片索引示意图
Python切片符号(:)用法及示例

简单用法

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

从索引1开始,到索引3结束,不包含索引3。

负索引

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

需要注意两种写法:

  • s[-2]:表示取索引为-2的值
  • s[-2:]:表示取从索引-2开始,往正方向到结束的范围的值。
>>> s[-2:-4]
[]
>>> s[-4:-2]
[6,7]

在默认情况,步长为1,方向为正方向

  • s[-2:-4:返回的是一个空数组
  • s[-4,-2]:正方向,取得索引-4和-3的值[6,7]
>>> s[:-6]
[0,1,2,3]

start忽略,end为负时,表示从索引0开始,正方向到索引-6结束,可以理解为到倒数第6个值结束。

指定步长

可以使用step指定步长,step缺省值为1。

>>> s[::2]
[0,2,4,6,8]

设置步长为2,取得偶数位的值

负步长

步长为正整数时,方向为从0到序列末索引的方向,可以称为正方向。步长为负整数,方向从序列的末索引到0,为反方向。

>>> s[::-1]
[9,8,7,6,5,4,3,2,1,0]

赋值

使用切片取值外,我们也使用切片对序列赋值。

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

删除

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