1、Python中切片的索引方式分为两种:

  1. 正索引
  2. 负索引

2、切片操作的表达方式

object[start_index:end_index:step]

step:可以表示切片的步长,当为1时表示顺序存取。步长的正负可以表示取值的方向。当为正时,表示从左向右取值,当为负数时,表示从右向左取值。
start_index:表示起始索引(包含索引本身),可以确定切片的起始位置,当为空时,表示取到端点位置,具体是“起始端点”还是“结束端点”要看step的值,当为正时,表示左边为起始端点,从左向右取;当为负数时,表示右边为起始端点,从右向左取。
end_index:表示终止索引(不包含索引本身),可以确定索引的结束为止。当为空时表示取到“终点”,具体终点是在左边还是右边,要看step的值是正数还是负数。

3、切片操作详解

以列表a =[0,1,2,3,4,5,6,7,8,9]为例

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

3.1· 取单个值

>>>a[5]
>>>5
>>>a[-4]
>>>6

3.2· 切取整个值

>>>a[:]#从左往右切取整个对象,此处的step = 1是省略的
>>>[0,1,2,3,4,5,6,7,8,9]
>>>a[::-1]#step的值控制输出的方向,负数为从右向左
>>>[9,8,7,6,5,4,3,2,1]

3.3·start_index 和end_index都是正(+)的情况

>>>a[1:6:1]
>>>[1,2,3,4,5]
step为1,默认从左往右开始取值,start位置为0,end位置为5,step方向和索引方向一致,输出[1,2,3,4,5]
>>>a[1;6:-1]
>>>[]
step为-1,默认从右往左开始取值,start位置为1,end位置为6,step方向和索引方向不一致,故输出[]
>>>a[6:1]
>>>[]
step默认为正数1,从左往右取值,start位置为6,end位置为1,step方向与索引方向不一致,故输出[]>>>a[:6:-1]
>>>[9,8,7]
step为负数1,end位置为6,start位置默认从右往左开始
>>>a[6:]
>>>[6,7,8,9]
step默认值正数1,start位置6,end位置默认到结尾
>>>>a[:6]
>>>[0,1,2,3,4,5]
step默认值为1,end位置为6,start位置默认从最左边开始
>>>a[6::-1]
>>>[6,5,4,3,2,1]
step的值为负数1,start位置为6,从start位置从右往左开始,end为空,默认到端点

3.4·start_index和end_index都是负数(-)的情况

>>>a[-1:-6]
>>>[]
step的值默认正数1,规定取值方向为从左往右
start=-1,end=-6,-1——>-6方向从右往左,两者矛盾,为空(可参考上图)
>>>a[-1:-6:-1]
>>>[9,8,7,6,5]
step=-1,方向为从右向左,
start=-1,end = -6,方向为从右向左,两者一致(可参考上图)
>>>a[-6:-1]
>>>[4,5,6,7,8]
step默认为正数,方向从左向右
start = -6,end = -1,方向也是从左向右,两者一致(可参考上图)
>>>a[-6:]
>>>[4,5,6,7,8,9]
step默认正数,方向从左往右
start = -6,end默认到端点,方向从左向右,两者一致(可参考上图)
>>>a[-6::-1]
>>>[4,3,2,1,0]
step负数1方向从右向左
start =-6,end默认到终点(此时的终点是从右往左的终点),输出
>>>a[:-6]
>>>[0,1,2,3]
step为正数,方向从左向右
start默认到端点,end=-6,方向从左向右
>>>a[:-6:-1]
>>>[9,8,7,6,5]

3.5·start_index(+)和end_index是(-)的情况

>>>a[1:-6]
>>>[1,2,3]
step默认为正数,方向从左往右
start=1,end=-6(即end = 4),方向从左往右
>>>a[1:-6:-1]
>>>[]
step为负数,方向从右向左
start =1,end = -6,方向从左向右,与step方向冲突,故为空集
>>>a[3:-9]
>>>[]
空集
>>>a[3:-9:-1]
>>>[3,2]
setp方向与start-->end方向一致

3.6 ·start_index(-)和end_index是(+)的情况

>>>a[-1:2]
>>>[]
方向不同,解释参考前面的内容
>>>a[-1:2:-1]
>>>[9,8,7,6,5,4,3]

3.7·连续切片操作

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

3.8切片操作的参数可以使用表达式

a[1+2:5:7%2]=a[3:5:1]
这两种方法起到的效果是一样的

3.9进行插入操作

>>>a[3:6]='guo'
[0,1,2,'g','u','o',6,7,8,9]
>>>a[3:5]='guo'
>[0,1,2,'g','u','o',5,6,7,8,9]
>>>a[3:]='guo'
>[0,1,2,3,'g','u','o']
>>>a[:3]='guo'
>['g','u','o',3,4,5,6,7,8,9]

插入里面的限定,其实都是可以用前面的step和end的思想来解决

  1. 如果限定了长度,那么就“挤一挤”
  2. 如果没有限定长度,那就直接抹掉后面的部分,或者前面的部分,将剩余的部分直接“拿下来即可”

3.10其他数据类型的切片操作

元组的切片操作

(0,1,2,3,4,5,6,7)[:3]=(0,1,2)

字符串的切片操作

‘woaiwodezuguo’[3:]=‘iwodezuguo’

4·使用切片也可以方便的截取偶数位置、奇数位置,总之是非常方便的

Python中切片详细讲解相关推荐

  1. python爬虫原理-python爬虫原理详细讲解

    原标题:python爬虫原理详细讲解 一 .爬虫是什么 1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. 2.互联网建立的目的?互联网的 ...

  2. 100个python算法超详细讲解:搬山游戏

    [100个python算法超详细讲解]@谷歌学术 1.问题描述 设有n座山,计算机与人作为比赛的双方,轮流搬山.规定每次搬 山数不能超过k座,谁搬最后一座谁输.游戏开始时,计算机请人输入 山的总数n和 ...

  3. 100个python算法超详细讲解:邮票组合

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小 面值邮票中的一张或几张的组合,可以满足不同邮件的不同邮资.现 在,邮局有4种不 ...

  4. 100个python算法超详细讲解:递归解决年龄问题

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁.问 第4个人多少岁,他说比第3个人大2岁.问第3人多少岁,他说比第2个 人大2 ...

  5. 100个python算法超详细讲解:谁是窃贼

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 警察审问4名窃贼嫌疑犯.现在已知,这4人当中仅有一名是窃 贼,还知道这4个人中的每个人要么是诚实的,要么总是说谎. 下面是这4个人给警察 ...

  6. 100个python算法超详细讲解:抢30游戏

    [100个python算法超详细讲解]@谷歌学术 1.问题描述 由两个人玩"抢30"游戏,游戏规则是:第一个人先说"1"或"1,2",第 二 ...

  7. 100个python算法超详细讲解:卡布列克常数

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 对于任意一个4位数n,进行如下的运算: 1)将组成该4位数的4个数字由大到小排列,形成由这4个数字构 成的最大的4位数. 2)将组成该4 ...

  8. 100个python算法超详细讲解:孪生素数

    [100个python算法超详细讲解@谷哥技术] 1.问题描述 本节要研究孪生素数的问题,先来看看什么是孪生素数. 所谓孪生素数指的是间隔为2的两个相邻素数,因为它们之间的距离已经 近得不能再近了,如 ...

  9. 100个python算法超详细讲解:狼追兔子

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 一只兔子躲进了10个环形分布的洞中的某一个.狼在第一个洞中 没有找到兔子,就隔一个洞,到第三个洞中去找:如果没有找到,就 隔两个洞,到第 ...

最新文章

  1. 不要再自己封装各种Util工具类了,这款神仙级框架你值得拥有!
  2. ADO.NET连接SQL Server数据库
  3. 可视化工具第一篇(百度Echarts)
  4. gcn 图卷积神经网络_复制一文读懂图卷积GCN
  5. java matches方法
  6. 功能丰富的 Perl: 一行程序
  7. Axure 8 注册码
  8. CGAL学习之路(三):CGAL读写点云
  9. 个人价值:个人价值冰山模型
  10. Unity MasterServer主服务器
  11. java程序的结构与类型实验报告_20172301 《Java软件结构与数据结构》实验三报告...
  12. 车载冰箱E-mark认证测试项目有哪些?
  13. for循环去掉最后一个逗号(三种方法)
  14. Linux学习(Kali为蓝本)
  15. PHP7的session无法使用memcache
  16. 北京大学 软微初试复试 经验总结贴
  17. 计算机数据库基础知识答案,数据库基础题库含答案.doc
  18. 域名、主机和网站之间的区别
  19. Google推出多重防御新举措,打击点击欺诈广告
  20. 企业招聘:34岁以上的和两年一跳的不要,开出工资我还以为看错了...

热门文章

  1. Sqlyog之excel数据导入方法
  2. linux安装ssl证书步骤,centos安装SSL证书的图文教程
  3. 亚马逊美国站儿童玩具车、毛绒玩具办理CPC认证 ASTMF963标准
  4. 【笔记整理】通信原理第九章复习——循环码
  5. stm32和电机开发(从mcu到架构设计)
  6. Android Studio 如何 安装 HAXM
  7. 带记录统计的PING工具
  8. SAP 常用报表汇总
  9. proxifier注册码
  10. securecrt8注册码