Python切片用法实例教程


Posted in Python onSeptember 08, 2014

本文以实例形式讲述了Python中切片操作的用法,分享给大家供大家参考借鉴,具体如下:

取一个list或tuple的部分元素是非常常见的操作。比如,一个list如下:

>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']

取前3个元素,应该怎么做呢?

比较笨的办法如下:

>>> [L[0], L[1], L[2]]
['Michael', 'Sarah', 'Tracy']

之所以是笨办法是因为扩展一下,取前N个元素就没辙了。

取前N个元素,也就是索引为0-(N-1)的元素,可以用循环:

>>> r = []
>>> n = 3
>>> for i in range(n):
...   r.append(L[i])
... 
>>> r
['Michael', 'Sarah', 'Tracy']

对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作

对应上面的问题,取前3个元素,用一行代码就可以完成切片:

>>> L[0:3]
['Michael', 'Sarah', 'Tracy']

L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。

如果第一个索引是0,还可以省略:

>>> L[:3]
['Michael', 'Sarah', 'Tracy']

也可以从索引1开始,取出2个元素出来:

>>> L[1:3]
['Sarah', 'Tracy']

类似的,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:

>>> L[-2:]
['Bob', 'Jack']
>>> L[-2:-1]
['Bob']

记住倒数最后一个元素的索引是-1。

切片操作十分有用。我们先创建一个0-99的数列:

>>> L = range(100)
>>> L
[0, 1, 2, 3, ..., 99]

可以通过切片轻松取出某一段数列。比如前10个数:

>>> L[:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

后10个数:

>>> L[-10:]
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

前11-20个数:

>>> L[10:20]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

前10个数,每两个取一个:

>>> L[:10:2]
[0, 2, 4, 6, 8]

所有数,每5个取一个:

>>> L[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

甚至什么都不写,只写[:]就可以原样复制一个list:

>>> L[:]
[0, 1, 2, 3, ..., 99]

tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:

>>> (0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)

字符串'xxx'或Unicode字符串u'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[::2]
'ACEG'

在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

总结:

有了切片操作,很多地方循环就不再需要了。Python的切片非常灵活,一行代码就可以实现很多行循环才能完成的操作

希望本文所述实例对大家进一步掌握Python程序设计能有所帮助。

Python 相关文章推荐
python中的装饰器详解
Apr 13 Python
Python实现把json格式转换成文本或sql文件
Jul 10 Python
Python爬虫代理IP池实现方法
Jan 05 Python
python 内置函数filter
Jun 01 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
Python编写一个优美的下载器
Apr 15 Python
Python3实现的简单验证码识别功能示例
May 02 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 Python
python实现可逆简单的加密算法
Mar 22 Python
Python使用sax模块解析XML文件示例
Apr 04 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
Sep 28 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 Python
Python常用模块用法分析
Sep 08 #Python
python实现斐波那契递归函数的方法
Sep 08 #Python
Python内置函数的用法实例教程
Sep 08 #Python
Python中函数的用法实例教程
Sep 08 #Python
Python多线程实例教程
Sep 06 #Python
Python Tkinter基础控件用法
Sep 03 #Python
Python Tkinter简单布局实例教程
Sep 03 #Python
You might like
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
php实现删除指定目录下相关文件的方法
2014/10/20 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
element ui里dialog关闭后清除验证条件方法
2018/02/26 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
2018/03/26 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
2018/05/07 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
2019/04/17 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
python中yaml配置文件模块的使用详解
2018/04/27 Python
python之消除前缀重命名的方法
2018/10/21 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
Python 异步协程函数原理及实例详解
2019/11/13 Python
美国最大的团购网站:Groupon
2016/07/23 全球购物
Giglio德国网上精品店:奢侈品服装和配件
2016/09/23 全球购物
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
提拔干部考察材料
2014/05/26 职场文书
应届大专生求职信
2014/06/26 职场文书
毕业论文答辩开场白
2015/05/27 职场文书