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 相关文章推荐
phpsir 开发 一个检测百度关键字网站排名的python 程序
Sep 17 Python
Python异常处理总结
Aug 15 Python
Python中使用items()方法返回字典元素对的教程
May 21 Python
Python3访问并下载网页内容的方法
Jul 28 Python
Python多进程同步简单实现代码
Apr 27 Python
Python Paramiko模块的使用实际案例
Feb 01 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 Python
python环境下安装opencv库的方法
Mar 05 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
Apr 24 Python
Django Model层F,Q对象和聚合函数原理解析
Nov 12 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中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
PHP中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
修改了一个很不错的php验证码(支持中文)
2007/02/14 PHP
模板引擎正则表达式调试小技巧
2011/07/20 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
Prototype Selector对象学习
2009/07/23 Javascript
jquery ajax 登录验证实现代码
2009/09/23 Javascript
javascript的数据类型、字面量、变量介绍
2012/05/23 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
2017/08/14 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
python 文件操作删除某行的实例
2017/09/04 Python
python复制文件到指定目录的实例
2018/04/27 Python
python使用tornado实现简单爬虫
2018/07/28 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
django ModelForm修改显示缩略图 imagefield类型的实例
2019/07/28 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
python tkinter canvas使用实例
2019/11/04 Python
python随机生成库faker库api实例详解
2019/11/28 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
初学者学习Python好还是Java好
2020/05/26 Python
巴西本土电商平台:Americanas
2020/06/21 全球购物
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
自荐信格式简述
2014/01/25 职场文书
升职自荐信怎么写
2015/03/05 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
python编程项目中线上问题排查与解决
2021/11/01 Python
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python