栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

切片学习笔记

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

切片学习笔记

python 中切片是用来切割可迭代对象(容器) 一个完整的切片:

语法:object[start:end:step]

start:指 切片的起始位置,如果没有值的话从头开始。 end :指切片的结束位置,但是不包含 end (前闭后开),如果没有值的话表示切割到结束为止。 step :表步长,步长的取值可为正数也可为负数,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,如果为正数,表示从左往右,如果为负数,表示从右往左。当step省略时,默认为1,即从左往右以增量1取值。 切取方向非常重要!  

示例1:

#slice.py
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(“numbers:”,numbers)
print(“numbers[ 3 : 9 ]:”,numbers[ 3 : 9 ]
print(“numbers[ 3 : ]:”,numbers[ 3 : ]
print(“numbers[ : 9 ]:”,numbers[ : 9 ]
print(“numbers[ -6 : -1 ]:”,numbers[ -6 : -1 ]
print(“numbers[ 1 : 9 : 2 ]:”,numbers[ 1 : 9 : 2 ]
print(“numbers[ -1 : 1 : -2 ]:”,numbers[ -1 : 1 : -2 ]

输出结果:

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

分析:

第一行代码定义了一个名为 numbers 的列表;

第二行代码表示直接输出 numbers 列表;

第三行代码运用到切片 [ 3 : 9 ] ,表示从下标 3 开始复制元素 直到下标 8 (9-1) 停止复制;

第四行代码运用到切片 [ 3 : ] ,等价于 numbers[ 3 : 10 ] ,表示从下标 3 开始复制元素 直到末尾 即下标  9 当终止下标未给定时取得到最后一个元素;

第五行代码运用到切片 [ : 9 ] ,等价于 numbers[ 0 : 9 ] 从下标 0 开始复制元素 直到下标  8 (9-1);

第六行代码运用到切片 [ -6 : -1 ] ,这里的切片等价于 numbers[ 4 : 9 ] *当下标为负数时python解释器会自动将负数下标转化为正数下标 我们可以根据 len (numbers) - 6 = 4 len (numbers) - 1 = 9 将其转换为正数下标;

第七行代码运用到切片 [ 1 : 9 : 2 ] ,表示从下标 1 开始复制元素 没复制 1 个元素,下标 +2 直到下标达到或者超过 8 (9-1) 这仍取不到 9 ; 第六行代码运用到切片 [ -1 : 1 : -2 ] ,表示从下标 len (numbers) -1,即下标 9 开始复制元素 (步长为 -2)每复制 1 个元素,下标 -2 直到下标 达到 2 或者小于2停止 这 仍取不到1 因为前者为负,则从右往左取 即 [ 9, 7, 5, 3 ]。 示例2: a = [0,1,2,3,4,5,6,7,8,9] 1. 切割单个值
>>> a = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] >>> a [ 0 ] 0 >>> a [ 4 ] 4

2. 切割完整对象

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

3. start和end全部取正数的情况  

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

 4. start和end全部取负数的情况

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

5. start和end正负混合情况

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

6. 连续的切片操作

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

7. 切片中的三个参数为表达式

>>> a [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] >>> a [ 1 + 2 : 2 * 3 : 7 % 2 ] [ 3 , 4 , 5
8. 切片可以操作其他的对象
>>> t = ( 1 , 2 , 3 , 4 , 5 ) >>> t [ 1 : 3 ] ( 2 , 3 ) >>> s = "ACDRF" >>> s [ 1 : 3 ] 'CD' >>> for i in range ( 0 , 100 ): ... print ( i ) ... >>> for i in range ( 0 , 100 )[ 2 :: 3 ][ - 10 :]: ... print ( i ) ... 71 74 77 80 83 86 89 92 95 98
总结: 1. 如果进行切片操作的时候,超出下标不会报错 2. 如果切片操作的时候方向相互矛盾的话,不会报错,返回的空 3. 在 python 中进行反向输出列表 第一种:循环 第二种: [::-1] 第三种: reverse()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/935724.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号