字符串切片操作

切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。

注意: 数是可选的,而冒号是必须的。

consequence[start:end:step]

切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片到哪里结束,第三个数(冒号之后)表示切片间隔数

如果不指定第一个数,Python就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。

☛ (序列首与序列尾 依据step方向决定 !)

注意: 返回的序列从开始位置开始 ,刚好在结束位置之前结束。

即开始位置是包含在序列切片中的,而结束位置被排斥在切片外。( 前闭后开 !)

  • step为正,则从左到右切片,如果start > end 则为空
  • step为负,则从右到左切片,如果start < end 则为空

  • start 和 end 填空,前者表示最开始,后者表示最后一个,

  • 同时为空的时候,表示取所有。至于方向,取决于step

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> a[::2]
[1, 3, 5, 7, 9] >>> a[1:6:2]
[2, 4, 6] >>> a[8:3:-1]
[9, 8, 7, 6, 5] # 右-》左切片,step 为1,a[8]=9, a[7]=8, ... a[4]=5, 8-3=5个 >>> a[10:0:-2]
[10, 8, 6, 4, 2] # 右-》左切片, 切片的时候,不存在 index 越界情况 >>> a[0:10:-2] # start < end , step 为负, 方向为右-》左,第一个是 a[0], a[0]的左边就再也没有值了。为空
[] >>> a[::-2] # a[:]表示取所有,step 为负就反方向
[10, 8, 6, 4, 2] >>> a[5::-2] # 右-》左,结果等价 a[5:0:-2] a[5]=6, a[3]=4, a[1]=2
[6, 4, 2] >>> a[:5:-2] # 右-》左, 等价于 a[9:5:-2] a[9]=10, a[7]=8
[10, 8]

总结:

1. start 和 end 不填,或者其中一个不填,都是指代获取所有,然后根据 step 确定方向。

2. step:表示取值的步长,默认为1,步长值不能为0。

3. 因此任意一个序列结构数据的索引范围为 -len(consequence) 到 len(consequence)-1 范围内的连续整数。

4. 当使用冒号(:)对序列进行切片取值时,你所输入的无论是start_index或者end_index,都不必局限于 -len(consequence) 到 len(consequence)-1 之间因为只有当你输入的索引号处于这个区间时才真正有效,而当你输入的索引号超出这个范围时,python会自动将start_index或end_index设定为缺省值(即第一个对象和最后一个对象)。

额外:

>>> a=[1,2,3,4,5,6,7]
>>> a[len(a)-1]
7
>>> a[-len(a)]
1

其中a[len(a)-1]等同于a[-1],a[-len(a)]等同于a[0],分别表示序列的最后一个和第一个对象。

【Python之路】特别篇--Python切片的更多相关文章

  1. Python之路(第九篇)Python文件操作

    一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r",encoding = “utf ...

  2. 【Python之路】特别篇--Python面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  3. 【Python之路】特别篇--Python面向对象(初级篇)

    概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最易被初学 ...

  4. python之路基础篇

    基础篇 1.Python基础之初识python 2.Python数据类型之字符串 3.Python数据类型之列表 4.Python数据类型之元祖 5.Python数据类型之字典 6.Python Se ...

  5. python之路第二篇(基础篇)

    入门知识: 一.关于作用域: 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 10 == 10: name = 'allen' print name 以下结论对吗? ...

  6. python之路入门篇

    一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器.Python这个名字,来 ...

  7. python之路第一篇

    一.python环境的搭建 1.window下环境的搭建 (1).在 https://www.python.org/downloads/ 下载自己系统所需要的python版本 (2).安装python ...

  8. 【python之路1】python安装与环境变量配置

    直接搜索 Python,进入官网,找到下载,根据个人电脑操作系统下载相应的软件.小编的是windows os .下载python-2.7.9.msi 安装包  双击安装程序,进入安装步骤.在安装过程中 ...

  9. 【Python之路】特别篇--Python内置函数

    abs() 求绝对值 i = abs(-100) print(i) # 100 all() 循环里面的参数 如果每个元素都为真,那么all返回值为真  假: 0 False None "&q ...

随机推荐

  1. [SDOI2013]直径 题解

    题面 这道题明显的一定要找到直径的具体路径,所以两遍dfs是比较好的选择: 第一问是一道弱智题吧? 主要难度全部分摊在了第二问: 其实不难,先找到任意一个直径: 对于任意一个在直径上的点: 设nxt[ ...

  2. H5传奇源码,附带微信支付,商城系统,新增了元宝交易商城系统源码

    源码说明:传奇游戏是80年底的经典游戏,传奇源码,H5游戏源码下载,附带微信支付,商城系统,新增了元宝交易商城系统源码,内置很多任务,比如首冲任务,修复了很多BUG.[架设要求]游戏名称:H5传奇世界 ...

  3. mysql在B-Tree上创建伪哈希索引

    构建哈希的过程 select过程 长字符串下,构建索引可通过自定义哈希作为索引,本人通过实验,在3百多个数据记录的下,性能效果很明显,完全不是一个等级.以下为索引前后几种情况对比 无索引的url:直接 ...

  4. python模块-paramiko-修改源码(demo实例)

    在github上下载一个paramiko,找到demos目录,复制到pycharm项目里面 这是因为python3传来得数据是bates数据类型,需要decode()一下就可以,在demos下得int ...

  5. Django模板(Template)系统

    Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} 变量名由字母数字和下划线组成. 点 ...

  6. Spectral Norm Regularization for Improving the Generalizability of Deep Learning论文笔记

    Spectral Norm Regularization for Improving the Generalizability of Deep Learning论文笔记 2018年12月03日 00: ...

  7. JavaScript的常用浏览器设置

    用什么浏览器?如果您不告诉我您使用的浏览器,我将告诉您有关JavaScript的常用浏览器设置.~火狐在菜单栏中选择工具->选项->内容以查看启用javascript的选项.Interne ...

  8. 短信对接——一种jdbc链接运用

    package sms; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamRead ...

  9. Nginx作为静态资源web服务之跨域访问

    Nginx作为静态资源web服务之跨域访问 首先了解一下什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器施加的安全限制. 所谓同源是指,域名,协议,端口均相 ...

  10. Python之if-else语句

    if--else语句if username == 'admin' and password == '123456': print('身份验证成功!') else: print('身份验证失败!')if ...