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

Python的切片符号语法

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

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

切片索引示意图

简单用法

>>> 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]

版权声明:著作权归作者所有。

相关推荐

Rxjs expand的用法分析

Rxjs的expand()函数声明:public expand(project: function(value: T, index: number), concurrent: number, scheduler: Scheduler): Observable expand()会递归调用project函数,project函数把源值映射为一个Observable,每次递归

Linux tee命令示例

功能从标准输入读取数据并写入到标准输出和文件。如果输出的文件不存在,则新建文件。语法tee [OPTION]... [FILE]... 选项:-a(--append): 追加输入内容到文件后面,不是覆盖。-i(--ignore-interrupts): 忽略中断信号。-help: 在线帮助。--version: 显示版本信息。示例使用管道

Python:defaultdict应用示例

class collections.defaultdict([default_factory[, ...]]) defaultdict继承与内置类dict,但对于不存在的键处理方式不同。dict处理缺失的键在Python访问dict不存在的键会抛出KeyError异常。如计数列表里的颜色colors = ('yellow', 'red', 'yellow',

JavaScript Array map()函数的用法及误用

Array的map()函数作用是一个数组映射为另一个数组,映射方式是以原数组的元素作为输入,使用提供的回调函数对输入元素处理,处理后返回的结果作为新数组的元素。基本语法var new_array = arr.map(function callback(currentValue, index, array) {  &nb