Python高级特性切片(Slice)操作详解


Posted in Python onSeptember 27, 2018

切片操作首先支持下标索引,通过[ N:M :P ]操作
索引正向从0开始,逆向从-1开始
N:切片开始位置
M:切片结束位置(不包含)
P:指定切片步长,为正数表示按照指定步长正向切片,为负数反之

一、列表的切片操作

列表切片后还是列表
通过列表生成器定义一个列表:

In [2]: a = [n for n in range(10)]
In [3]: a
Out[3]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

通过切片浅拷贝对象:

In [4]: a[:]
Out[4]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [5]: a[::]
Out[5]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

指定开始切片位置:

In [6]: a[1:]
Out[6]: [1, 2, 3, 4, 5, 6, 7, 8, 9]
In [7]: a[1::]
Out[7]: [1, 2, 3, 4, 5, 6, 7, 8, 9]

指定切片范围(不包含结束):

In [8]: a[1:5]
Out[8]: [1, 2, 3, 4]
In [9]: a[2:6:]
Out[9]: [2, 3, 4, 5]

指定步长切片:

In [10]: a[0:9:3]
Out[10]: [0, 3, 6]
In [11]: a[0:9:2]
Out[11]: [0, 2, 4, 6, 8]

指定步长方向:

In [12]: a[9:0:-2]
Out[12]: [9, 7, 5, 3, 1]
In [13]: a[9:0:-3]
Out[13]: [9, 6, 3]

通过切片逆置列表:

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

二、元组切片

元组切片后还是元组,用法和列表切片一样,但是一点需要注意

In [17]: b = (n for n in range(5))
In [18]: b
Out[18]: <generator object <genexpr> at 0x00000206445ED780>
# 推到式通过小括号()以后就不是元组了,是生成器的另一种形式
In [19]: b = tuple(n for n in range(5))
In [20]: b
Out[20]: (0, 1, 2, 3, 4)
In [21]: b[::-1]
Out[21]: (4, 3, 2, 1, 0)
In [22]: b[0:2:]
Out[22]: (0, 1)

三、字符串切片

字符串切片之后还是字符串,用法也和列表切片一致

In [23]: c = "hello,world"
In [24]: c[::-1]
Out[24]: 'dlrow,olleh'
In [25]: c[0:5:]
Out[25]: 'hello'

Python 相关文章推荐
python基础教程之面向对象的一些概念
Aug 29 Python
Python选课系统开发程序
Sep 02 Python
Python网络爬虫项目:内容提取器的定义
Oct 25 Python
Python线程之定位与销毁的实现
Feb 17 Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 Python
OpenCV 边缘检测
Jul 10 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
Python如何基于selenium实现自动登录博客园
Dec 16 Python
torch 中各种图像格式转换的实现方法
Dec 26 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 Python
python中pandas对多列进行分组统计的实现
Jun 18 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 #Python
使用 Python 实现微信群友统计器的思路详解
Sep 26 #Python
APIStar:一个专为Python3设计的API框架
Sep 26 #Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 #Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 #Python
Linux下python3.6.1环境配置教程
Sep 26 #Python
简单谈谈python基本数据类型
Sep 26 #Python
You might like
PHP实现的方程求解示例分析
2016/11/11 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
js继承 Base类的源码解析
2008/12/30 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
你的 mixin 真的兼容 ECMAScript 5 吗?
2013/04/11 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
详细分析Node.js 多进程
2020/06/22 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
python文件的md5加密方法
2016/04/06 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
python实现键盘控制鼠标移动
2020/11/27 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
十岁生日同学答谢词
2014/01/19 职场文书
授权委托书样本
2014/04/03 职场文书
快餐公司创业计划书
2014/04/29 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
给老婆的检讨书
2015/01/27 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
学校标语口号大全
2015/12/26 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
新手入门Jvm-- JVM对象创建与内存分配机制
2021/06/18 Java/Android
python常见的占位符总结及用法
2021/07/02 Python
Go语言并发编程 sync.Once
2021/10/16 Golang
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL