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使用ctypes模块调用windowsapi获取系统版本示例
Apr 17 Python
Python实现拼接多张图片的方法
Dec 01 Python
python中base64加密解密方法实例分析
May 16 Python
初步讲解Python中的元组概念
May 21 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
django框架model orM使用字典作为参数,保存数据的方法分析
Jun 24 Python
在PyTorch中Tensor的查找和筛选例子
Aug 18 Python
Python提取PDF内容的方法(文本、图像、线条等)
Sep 25 Python
django框架创建应用操作示例
Sep 26 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
基于Python实现一个春节倒计时脚本
Jan 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
example1.php
2006/10/09 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
php实现webservice实例
2014/11/06 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
js查找父节点的简单方法
2008/06/28 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
JavaScript中this详解
2015/09/01 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
Vue Ajax跨域请求实例详解
2017/06/20 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
Python中optparser库用法实例详解
2018/01/26 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
eclipse创建python项目步骤详解
2019/05/10 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
宿舍违规检讨书
2014/01/12 职场文书
班级聚会策划书
2014/01/16 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
注册资产评估专业求职信
2014/07/16 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
小学重阳节活动总结
2015/03/24 职场文书
初中数学教学随笔
2015/08/15 职场文书
导游词之长城八达岭
2019/09/24 职场文书