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中super的用法实例
May 28 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
Python 内置函数complex详解
Oct 23 Python
python使用pandas实现数据分割实例代码
Jan 25 Python
Django 数据库同步操作技巧详解
Jul 19 Python
python plotly绘制直方图实例详解
Jul 22 Python
python try except返回异常的信息字符串代码实例
Aug 15 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
Oct 06 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
基于matplotlib xticks用法详解
Apr 16 Python
python 提取html文本的方法
May 20 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
Terran剧情介绍
2020/03/14 星际争霸
推荐个功能齐全的发送PHP邮件类
2007/01/03 PHP
php 空格,换行,跳格使用说明
2009/12/18 PHP
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
php URL跳转代码 减少外链
2011/06/25 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
js表头排序实现方法
2015/01/16 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
2016/01/28 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
React组件的三种写法总结
2017/01/12 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
python生成n个元素的全组合方法
2018/11/13 Python
Python解决pip install时出现的Could not fetch URL问题
2019/08/01 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
苏宁红孩子母婴商城:redbaby
2017/02/12 全球购物
2019新员工试用期转正申请书3篇
2019/08/13 职场文书
如何在C++中调用Python
2021/05/21 Python
使用nginx配置访问wgcloud的方法
2021/06/26 Servers
世界十大狙击步枪排行榜
2022/03/20 杂记
Go语言 详解net的tcp服务
2022/04/14 Golang