美文网首页
Python学习笔记 - 切片Slice

Python学习笔记 - 切片Slice

作者: 烂笔头_27 | 来源:发表于2018-08-02 17:51 被阅读56次

简介


大多数的编程语言都支持使用索引来访问数组的元素,像这样:

array = range(10)
print(array[1])
#输出:1

然而在Python中,使用切片(Slice)的操作可以对数组进行更丰富的操作。

用例


1. 负号

大多数的编程语言都只支持正数的索引来访问数组元素,在Python中,还能使用负数来访问:

print(array[-1])          #输出:9
print(array[-2])          #输出:8

从这个结果可以看出,如果索引为负数时,从数组中取元素的顺序是从右向左取的,索引对应元素可以表示为:

 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
 0   1   2   3   4   5   6
-6  -5  -4  -3  -2  -1

2. 冒号

完整的使用冒号切片的表达式是这样的:

array[ start : end : step ]

start
表示起始的索引(包含),默认值为0
end
表示结束的索引(不包含),默认值为数组总长度
step
步长,默认为1, 不能为0
用例:

print(array[1:])            # 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]    从索引1开始,到最后一个元素,步长使用默认值1
print(array[:3])            # 输出:[0, 1, 2]                      从索引0开始,到索引2的元素,步长使用默认值1
print(array[::3])           # 输出:[0, 3, 6, 9]                   从索引开始,到最后一个元素,步长为3
print(array[4:-13])         # 输出:[]                             结束的索引超出范围,返回空数组
print(array[::-1])          # 输出:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 步长为-1,相当于将这个数组倒序排列
print(array[::-2])          # 输出:[9, 7, 5, 3, 1]                步长为-2,从最后一个元素开始,每两个取一次元素
print(array[::0])           # 报错,步长不能为0
print(array[::11])          # 输出:[0]                            从索引0开始取元素,加上步长后超过索引范围,只返回一个元素
print(array[::-11])         # 输出:[9]                            从索引9开始取元素,减去步长后超过索引范围,只返回一个元素
print(array[:])             # 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 相当于复制原数组

总结


使用切片,可以快速灵活的拆分数组,很多需要循环的地方,只用一行代码就搞定了,非常简洁。

参考


廖雪峰Python教程 - 切片
stackoverflow - Understanding Python's slice notation
分析python切片原理和方法

相关文章

  • Python学习笔记 - 切片Slice

    简介 大多数的编程语言都支持使用索引来访问数组的元素,像这样: 然而在Python中,使用切片(Slice)的操作...

  • 高级特性

    1. 切片 Python提供了切片(Slice)操作符: ============================...

  • 《Advanced Swift》笔记4:切片(Slice)

    原文链接:《Advanced Swift》笔记4:切片(Slice) 切片(Slice)是基于任何集合类型(遵守C...

  • 高级特性

    1.切片(Slice)# python提供了切片(Slice)操作符,能大大简化取数据操作L = ['aa','b...

  • [python基础]-10 高级特性-切片操作

    1.切片操作(slice) 在python中可以对字符串、列表、元祖三种数据类型进行切片(slice)操作,切片的...

  • Python高级特性-1

    切片(Slice) 对经常取指定索引范围的操作,需要用循环的操作,Python提供了切片(Slice)操作符,能大...

  • python切片(slice)

    这里还有一个step值,可以用在上面素有例子的后面: 重点需要记住的是::end值代表的是不被选中的第一个位置.所...

  • [Python]slice切片

  • Python切片(Slice)

    这一篇文是第一次学习Python高级特性 叫切片(Slice) ,可以对list、tuple、字符串进行截取操作 ...

  • Go基础 - 4 数组,切片,集合,通道

    数组 array 切片 slice 集合 map Map的迭代顺序是随机的 通道 channel 相关阅读 学习笔记

网友评论

      本文标题:Python学习笔记 - 切片Slice

      本文链接:https://www.haomeiwen.com/subject/enhsvftx.html