一、什么是切片操作?

利用Python解决问题的过程中,经常会遇到从某个对象中抽取一部分值的情况,但字符串本身没有提供截取字符串的方法,切片操作就是为大家提供切割、分割、截取容器的方法。

二、切片操作的一般方式

  • 一个完整的切片表达式包含两个“:”(冒号),用于分隔三个参数:(start_index:end_index:step)。
  • 需要注意的是:切片是一个前闭后开的区间。

1. 容器 [ strat :] :

  • 从 start 位置开始截取字符串,截取到末尾容器[ strat :end ] ,到 end 位置结束,但不包含 end 位置。
>>> s =
>>> "Today is Saturday"
>>> s[3:]
>>> 'ay is Saturday'

2.容器 [ : end ] :

  • 左侧不写时,默认从下标为 0 的位置开始截取。
>>> s =
>>> "Today is Saturday"
>>> s[6:8]
>>> 'is'

3.容器 [ start :end:step ]:

  • 不写步长时默认为 1 ,可以指定步长。
  • 步长为正数的时候方向为从左往右切,步长为负数的时候方向为从右往左切。
>>> ls = [0,1,2,3]
>>> ls[3:0:-1]
>>> [3,2,1]
>>> ls[0:3:1]
>>> [0,1,2]

三、切片操作详细操作

以下操作以 list 对象 s = [0,1,2,3,4,5,6,7,8,9]为例:

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

1.切取单个元素

#当索引只有一个数时,表示切取某一个元素。
>>> a[0]
0
>>> a[-8]
2
>>> a[4]
4

2.切取完整对象

>>> a[:]                #从下标0开始,到9结束,从左向右
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[::]              #从下标0开始,到9结束,从左往右
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[::-1]                #从下标9开始,到0结束,从右往左
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

3.start_index 和 end_index 都为正索引的情况

>>> a[1:5]
[1, 2, 3, 4]
start_index = 1 ,end_index = 5,step = 1决定了从左往右取值
>>>a[:5:-1]
>>> [9, 8, 7,6]
step=-1,从右往左取值,而start_index从端点开始,因此这里的端点是“终点”,即从 9 开始一直取到end_index=5(该点不包括)。 
>>> a[1:5:-1]
[]
start_index = 1 ,end_index = 5,step = -1决定了从右往左取值,互相矛盾。
因此输出空列表,表示没取到数据
>>>a[6::-1]
>>> [6, 5, 4, 3, 2, 1, 0]
step=-1,从右往左取值,从start_index=6开始,一直取到“起点”0。

4.start_index 和 end_index 都为负索引的情况

>>>a[-1:-6]
>>> []
step=1,从左往右取值,而start_index=-1到end_index=-6决定了从右往左取值,两者矛盾,因此输出空列表,表示没取到数据
索引-1在-6的右边(如上图),负索引-1 =正索引 9 ;负索引-6 =正索引 4 
>>>a[-1:-6:-1]
>>> [9, 8, 7, 6, 5]
step=-1,从右往左取值,start_index=-1到end_index=-6同样是从右往左取值。
索引-1在6的右边(如上图),负索引-1 =正索引 9 ;负索引-6 =正索引 4
>>>a[-6:]
>>> [4, 5, 6, 7, 8, 9]
step=1,从左往右取值,从start_index=-6开始,一直取到“终点”。
>>>a[-6::-1]
>>> [4, 3, 2, 1, 0]
step=-1,从右往左取值,从start_index=-6开始,一直取到“起点”。

5.start_index和end_index正(+)负(-)混合索引的情况

>>>a[1:-6]
>>> [1, 2, 3]
start_index=1在end_index=-6的左边,因此从左往右取值,而step=1同样决定了从左往右取值,因此结果正确
>>>a[1:-6:-1]
>>> []
start_index=1在end_index=-6的左边,因此从左往右取值,但step=-则决定了从右往左取值,两者矛盾,因此为空。
>>>a[-1:6]
>>> []
start_index=-1在end_index=6的右边,因此从右往左取值,但step=1则决定了从左往右取值,两者矛盾,因此为空。
>>>a[-1:6:-1]
>>> [9, 8, 7]
start_index=-1在end_index=6的右边,因此从右往左取值,而step=-1同样决定了从右往左取值,因此结果正确。

6.多层切片操作

>>> a[:6][2:6][-1:]
[5]
相当于:
a[:6] = [0, 1, 2, 3, 4, 5]
a[:6][2:6] = [2, 3, 4, 5]
a[:6][2:6][-1:] = [5]
无限次多层切片操作,只要上一次返回的是非空可切片对象即可。

7.其他对象的切片操作

>>> (0, 1, 2, 3, 4, 5)[:3]
>>> (0, 1, 2)
元组的切片操作
>>>'ABCDEFG'[::2]
>>>'ACEG'
字符串的切片操作

四、常用的切片操作

1.取偶

>>>b = a[::2]
[0, 2, 4, 6, 8]

2.取奇

>>>b = a[1::2]
[1, 3, 5, 7, 9]

3.修改单个元素

>>>a[3] = ['A','B']
[0, 1, 2, ['A', 'B'], 4, 5, 6, 7, 8, 9]

4.在某个位置插入元素

>>>a[3:3] = ['A','B','C']
[0, 1, 2, 'A', 'B', 'C', 3, 4, 5, 6, 7, 8, 9]
>>>a[0:0] = ['A','B']
['A', 'B', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

5.替换一部分元素

>>>a[3:6] = ['A','B']
[0, 1, 2, 'A', 'B', 6, 7, 8, 9]

注意:
“取单个元素(不带“:”)”时,返回的是对象的某个元素。

Python——切片操作相关推荐

  1. python切片语法-彻底搞懂Python切片操作

    在利用Python解决各种实际问题的过程中,经常会遇到从某个对象中抽取部分值的情况,切片操作正是专门用于完成这一操作的有力武器.理论上而言,只要条件表达式得当,可以通过单次或多次切片操作实现任意切取目 ...

  2. python切片操作 当所有数据都省略时_python疑难问题---13、Python切片操作

    python疑难问题---13.Python切片操作 一.总结 一句话总结: Python切片操作的核心就是:切片操作的时候先分析step,因为step正负表示方向,再看start_index和end ...

  3. python切片操作 当所有数据都省略时_Python切片操作

    利用python解决问题的过程中,经常会遇到从某个对象中抽取部分值的情况."切片"操作正是专门用于实现这一目标的有力武器.理论上,只要条件表达式得当,可以通过单次或多次切片操作实现 ...

  4. 全面深入彻底理解Python切片操作【原创】

    全面深入彻底理解Python切片操作[原创] 我们基本上都知道Python的序列对象都是可以用索引号来引用的元素的,索引号可以是正数由0开始从左向右,也可以是负数由-1开始从右向左. 在Python中 ...

  5. Python切片操作

    一.Python可切片对象的索引方式 Python可切片对象的索引方式包括:正索引和负索引两部分. 如下图所示,以a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例: 二.Pyt ...

  6. python怎么切片提取_彻底搞懂Python切片操作

    在利用Python解决各种实际问题的过程中,经常会遇到从某个对象中抽取部分值的情况,切片操作正是专门用于完成这一操作的有力武器.理论上而言,只要条件表达式得当,可以通过单次或多次切片操作实现任意切取目 ...

  7. python切片操作失败原因_彻底搞懂Python切片操作

    在利用Python解决各种实际问题的过程中,经常会遇到从某个对象中抽取部分值的情况,切片操作正是专门用于完成这一操作的有力武器.理论上而言,只要条件表达式得当,可以通过单次或多次切片操作实现任意切取目 ...

  8. c++list支持索引吗_还在为不懂Python切片操作及原理而苦恼吗?漫画帮你立马理解掌握...

    我首先通过 input() 函数,接收了外部输入字符串,然后通过 list 函数的切片,实现了回文数,代码真的好简洁,我自己都佩服我自己,我也不知道小组长会问我切片原理,我好无奈呀. s = inpu ...

  9. python切片操作例题_Python之切片操作

    假设list的长度(元素个数)是length, start_index和stop_index在符合虚拟的逻辑位置关系时, start_index和stop_index的绝对值是可以大于length的. ...

  10. python切片操作的几种格式_【Python杂记】第四篇:序列切片

    使用python处理问题的过程中,经常会遇到从某个序列中抽取部分值的情况."切片"操作正是专门用于实现这一目的的方法. 实际上,可以通过单次或多次切片操作实现任意目标值切取.切片操 ...

最新文章

  1. 哪些品牌开始连接鸿蒙系统,华为鸿蒙系统硬件生态品牌升级为 HarmonyOS Connect
  2. 获取每个月最后一天的小技巧
  3. 如何使用Laravel Debugbar?
  4. 【《Objective-C基础教程 》笔记】(八)OC的基本事实和OC杂七杂八的疑问
  5. ML之NB:基于NB朴素贝叶斯算法训练20类新闻文本数据集进行多分类预测
  6. Object类—复写equals方法,hashCode方法,toString方法
  7. Git分支操作命令:删除与恢复
  8. 基于html5游戏毕业设计数据流图,基于HTML5的网络拓扑图设计
  9. 如何进行个人知识管理和提高自己能力?
  10. python视频提取音频_python脚本实现mp4中的音频提取并保存在原目录
  11. 小结SQL Server连接失败错误及解决[引用]
  12. 微信小程序实质是什么? Hybrid App
  13. 14. jQuery - 添加元素
  14. How Touch Screen Monitors Work
  15. 网络云存储技术Windows server 2012 (项目十六 基于iSCSI传输的配置与管理)
  16. python docx 设置字体大小_python docx字体设置
  17. 聊聊千古名方逍遥丸【转载】
  18. OFDM 调制系统框图 OFDM
  19. 震惊!某徐姓诗人竟,,
  20. matlab 山脊 提取,ArcGIS中利用水文分析提取山脊线山谷线

热门文章

  1. 白帽SEO霸屏技术分享,霸屏并没有想象的那样神秘
  2. k8s DNS服务配置
  3. hive与impala相关
  4. 智能小区 安防技术详解及安防隐患杂谈
  5. CMS功能(简介和配置)
  6. css 一行超出显示省略号 多行超出显示省略号
  7. 梯度下降算法和正规方程组学习笔记
  8. python 函数 求绝对值 abs()
  9. DSPE-PEG2K-MAL|磷脂聚乙二醇马来酰亚胺(DSPE-PEG-MAL)|二硬脂酰基磷脂酰乙醇胺 聚乙二醇 马来酰亚胺,齐岳生物
  10. matlab数表数据类型转换,[转载]Matlab 数据类型  五、表