python切片操作方法的实例总结

 更新时间:2022年06月24日 09:13:18   作者:rap小浣熊  
所谓切片就是在某个数据里提取需要的部分,提取到的是某个索引下的值,或者索引区间的值,下面这篇文章主要给大家介绍了关于python切片操作方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

文章参考自:link.

前言

最近学习python切片,时而醍醐灌顶时而云里雾里,今天终于弄清楚了 python切片 里面自己经常疑惑的地方,记录一下,方便以后查看。

一、切片的2种索引方向

如果掌握切片方法,就能对所有目标值进行随意切取,然鹅可切片的目标对象有2种索引方向:正索引负索引。如下图所示,
以 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]举例:

这个字符串 a 的正索引是由左往右,头下标是0,尾下标是9;

它的负索引是由右往左,头下标是-1,尾下标是-10.

二、切片的操作方式

要想成功完成切片,那么需要包含2个 ‘ :’符号,以及3个参数,分别是start_index、end_index、step,一个完整的切片表达式如下所示:

切片操作基本表达式:object[start_index : end_index : step]

1、开始索引 start_index :表示的是开始切片的位置,并且切片结果包含该索引下的值;

2、终止索引 end_index: 表示的结束切片的位置,并且切片结果不包含该索引下的值;

3、步长step :表示切取的步长值,可正可负,step为正时,索引方向为正方向,step为负时,索引方向为负方向,当step值省略时,默认取值为1。

切记:步长正负决定切片方向,非常重要!!

当未写start_index、end_index的值时,都默认,从索引的端点处开始

三、一些基本操作

以下举例对象都是列表 a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

1、切取单个对象

切取索引为3的位置所对应的值:

2、切取整个列表

不填写值的时候,从端点处开始

3、步长step正负值 决定索引方向的一些案例

step=1,由左向右,包含start_index =1索引本身包括的值,不包括终止索引end_index =5本身包含的值。

// An highlighted block
>>> a [1: 5: ]
[1, 2, 3, 4]
>>> # 步长step = 1,默认值,由左往右正索引方向

step = -1,由右向左,依旧不包含终止索引=5本身所包含的值

// An highlighted block
>>> a [ : 5 :-1]
[9, 8, 7, 6]
>>> # 步长step= -1,负索引,
起始索引没写,表示从端点开始由右往左,终止索引是5

索引方向相互矛盾,值为空

// An highlighted block
>>> a [7 : 2 ]
[]
>>> # 这是因为起始索引为7终止索引为2,方向是由右往左,
>但是步长step默认是1,表示正索引,由左往右,两者方向矛盾值为空

索引值为负的情况,一切以step值正负为准,决定索引方向!

// An highlighted block
>>> a [ -6 : :]
[4, 5, 6, 7, 8, 9]
>>> #起始于 start_index = -6,步长为1,由左向右

根据前面所学,切片结果包含起始索引位置的值,但不包含终止索引位置的值,这种情况指的是给定了具体的终止索引,如下:

// An highlighted block
>>> #给了明确的终止索引位置,那结果就不包含终止索引本身的值
如下不包含end_index = 5位置上的值
>>> a [ : 5 : -1 ]
[9, 8, 7, 6]

这个案列是包含了终止索引位置的值,参照上条加入对比。

也就是说,指定了具体的终止索引位置,那么取值不包括这个位置上的值,如果没指定,默认终止索引就在端点处,那么取值包括该位置的值

// An highlighted block
>>> a [ 5: : -1]
[5, 4, 3, 2, 1, 0]
>>> #没有指定具体的终止索引位置,所以默认终止于端点处,
因此包含端点处的值,即0

四、进阶操作

1.修改某个元素值

直接将修改后的值带入进索引里面

// An highlighted block
>>> a [ 2 ] = [ 'A' ]
>>> print (a)
[0, 1, ['A'], 3, 4, 5, 6, 7, 8, 9]
 #直接在需要修改的索引处赋值,将索引值 = 2的值修改为['A']

2.替换元素值

是从起始索引开始,包含起始索引本身的值,将数值插入,然后再将终止索引本身及以后的值,紧跟在插入数值后面就行了,不包含终止索引本身。下面以替代索引3和5之间的元素为案例分析

包含 “起始索引=3 ”的元素本身,不包含”终止索引 = 5“的元素本身,元素个数应该是2个。

(1)给定替换的元素个数 = 2

// An highlighted block
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print (a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [ 3: 5] = [ 'b', 'c']
>>> print (a)
[0, 1, 2, 'b', 'c', 5, 6, 7, 8, 9]
>>> #替代写法,将起始索引本身的值到终止索引前一个索引之间的值进行替换,
>终止索引本身的数值不替换

(2)给定替换的元素个数 > 2个

// An highlighted block
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print (a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [ 3: 5 ] = [ 'b', 'c', 'd', 'e']
>>> print (a)
[0, 1, 2, 'b', 'c', 'd', 'e', 5, 6, 7, 8, 9]
>>>  #插入写法,从开始索引为3的地方带入插入值,带入插入数值后,
将索引值为5的值本身及其后面的值紧跟着排列在后就行

(3)给定替换的元素个数 < 2。

// An highlighted block
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print (a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [ 3: 5 ] = [ 'b' ]
>>> print (a)
[0, 1, 2, 'b', 5, 6, 7, 8, 9]
>>> # 替换了起始索引 = 3本身的值,
>终止索引=5及其以后的值都紧跟在插入值后面,
>索引=4处的值伴随着索引 = 3的值一起被替换掉了

3、插入元素值

切片这里,最困惑的就是没理解替换元素值、和插入元素值两者的区别,现在恍然大悟,替换的原理如上所述,接下来插入元素值其实很简单,只要保持,终止索引、起始索引是同一个值再进行赋值就可以了

(1)插入一个元素

// An highlighted block
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print (a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [6:6 ] = ['c', 'd', 'e', 'f','g']
>>> print (a)
[0, 1, 2, 3, 4, 'b', 'c', 'd', 'e', 'f', 'g', 5, 6, 7, 8, 9]
>>> #插入多个元素,其他原本的元素值和个数都不发生改变

(2)插入多个元素,甚至字符串

// An highlighted block
>>> a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print (a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [ 3: 3] = [ 'hello , world!']
>>> print (a)
[0, 1, 2, 'hello , world!', 3, 4, 5, 6, 7, 8, 9]

4、选择切片位置

(1)取索引值为偶数的位置进行切片

// An highlighted block
>>> a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [ : : 2]
[0, 2, 4, 6, 8]
>>> # 选取索引值为偶数的位置进行切片

(2)选取索引值为奇数的位置进行切片

// An highlighted block
>>> a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [ 1: :2]
[1, 3, 5, 7, 9]
>>> # 选取索引值为奇数的位置进行切片

综上,就是今天学习python切片的小结,记录完成!

总结

到此这篇关于python切片操作方法的文章就介绍到这了,更多相关python切片操作方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Tensor和NumPy相互转换的方法

    Tensor和NumPy相互转换的方法

    本文主要介绍了Tensor和NumPy相互转换的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • python 实用工具状态机transitions

    python 实用工具状态机transitions

    这篇文章主要介绍了python 实用工具状态机transitions的使用,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-11-11
  • python中的插入排序的简单用法

    python中的插入排序的简单用法

    在本篇内容里小编给各位分享的是一篇关于python中的插入排序的简单用法,有兴趣的朋友们可以参考学习下。
    2021-01-01
  • Python Flask RESTful使用demo演示

    Python Flask RESTful使用demo演示

    这篇文章主要为大家介绍了Python Flask RESTful使用demo演示,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • keras中epoch,batch,loss,val_loss用法说明

    keras中epoch,batch,loss,val_loss用法说明

    这篇文章主要介绍了keras中epoch,batch,loss,val_loss用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 解读什么是npy文件,为什么要用npy格式保存文件

    解读什么是npy文件,为什么要用npy格式保存文件

    这篇文章主要介绍了什么是npy文件,为什么要用npy格式保存文件这个问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 在Tensorflow中实现梯度下降法更新参数值

    在Tensorflow中实现梯度下降法更新参数值

    今天小编就为大家分享一篇在Tensorflow中实现梯度下降法更新参数值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 10个python爬虫入门实例(小结)

    10个python爬虫入门实例(小结)

    这篇文章主要介绍了10个python爬虫入门实例(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • opencv python 对指针仪表读数识别的两种方式

    opencv python 对指针仪表读数识别的两种方式

    这篇文章主要介绍了opencv python 对指针仪表读数识别的两种方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法

    浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法

    这篇文章主要介绍了浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论