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采集腾讯新闻实例
Jul 10 Python
在Python 3中实现类型检查器的简单方法
Jul 03 Python
python实现杨辉三角思路
Jul 14 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
Python搜索引擎实现原理和方法
Nov 27 Python
Django中Model的使用方法教程
Mar 07 Python
Python多进程multiprocessing.Pool类详解
Apr 27 Python
python中csv文件的若干读写方法小结
Jul 04 Python
Python 图像对比度增强的几种方法(小结)
Sep 25 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 Python
Python Selenium异常处理的实例分析
Feb 28 Python
python获取淘宝服务器时间的代码示例
Apr 22 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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
php面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
浅谈Angular中ngModel的$render
2016/10/24 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
SeaJS中use函数用法实例分析
2017/10/10 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
python opencv之SURF算法示例
2018/02/24 Python
Python中pillow知识点学习
2018/04/30 Python
详解python之协程gevent模块
2018/06/14 Python
python中while和for的区别总结
2019/06/28 Python
python读写配置文件操作示例
2019/07/03 Python
基于多进程中APScheduler重复运行的解决方法
2019/07/22 Python
python 中xpath爬虫实例详解
2019/08/26 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
五年级英语教学反思
2014/01/31 职场文书
物流仓管员岗位职责
2015/04/01 职场文书
高老头读书笔记
2015/06/30 职场文书
读书笔记格式
2015/07/02 职场文书
干部理论学习心得体会
2016/01/21 职场文书
详解NodeJS模块化
2021/06/15 NodeJs
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers