python基础6(来自廖雪峰的官方网站)
高级特性
切片
取一个list或tuple的部分元素是非常常见的操作。比如,一个list如下:
>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
取前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 = list(range(100))
>>> L
[0, 1, 2, 3, ..., 99]
可以通过切片轻松取出某一段数列。比如前10个数:
>>> L[:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
后10个数:
>>> L[:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
前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'
也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:
>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[::2]
'ACEG'
在很多编程语言中,针对字符串提供了很多各种截取函数(例如,substring),其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。
python基础6(来自廖雪峰的官方网站)相关推荐
- python基础8(来自廖雪峰的官方网站)
生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大 ...
- python基础7 (来自廖雪峰的官方网站)
高级特性 迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). 在Python中,迭代是通过for ... in来 ...
- python基础5(来自廖雪峰的官方网站)
函数 定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 我们以自定义一个求绝对值的 ...
- python基础4(来自廖雪峰的官方网站)
dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度.举个例子,假设要根据同学的名字查 ...
- python基础3(来自廖雪峰的官方网站)
条件判断 完整形式如下: if <条件判断1>:<执行1> elif <条件判断2>:<执行2> elif <条件判断3>:<执行3& ...
- python基础2(来自廖雪峰的官方网站)
list和tuple list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. >>> classmates = ['Mic ...
- python基础1(来自廖雪峰的官方网站)
转义字符 为了简化,Python还允许用r''表示''内部的字符串默认不转义,eg. >>> print(r'\\\t\\') \\\t\\ 多行 为了简化,Python允许用''' ...
- python的本质,讨论 - 廖雪峰的官方网站
关于 yield: yield一词的意思有 n.产出,产量:v.让步,提供. 所以当我们定义一个生成器函数时(带yield关键字的函数): def Iter(): for i in range(10) ...
- python正确方法,方法 - 廖雪峰的官方网站
在一个对象中绑定函数,称为这个对象的方法. 在JavaScript中,对象的定义是这样的: var xiaoming = { name: '小明', birth: 1990 }; 但是,如果我们给xi ...
最新文章
- GitHub上最受欢迎的Android开源项目TOP20
- .net (object sender, EventArgs e) 学习总结
- 分享云及人工智能的一些学习资源和学习心得
- leetcode 	222 	Count Complete Tree Nodes
- KOFLive Beta Daily-Scrum 9
- Java中的注解是如何工作的?
- 【小马哥】Spring Cloud系列讲座
- 关于angularjs指令
- ASP.NET实现多域名多网站共享Session值
- Opencv 图像融合/泊松融合/seamlessClone
- 亿图图示11.0新版本全新上线 助力个人及企业降本增效
- 端口转发、映射、代理
- python数据挖掘实验报告_Python数据挖掘实践—决策树
- 五、隐函数微分法和逆函数导数 六、指数与对数函数导数、对数微分法 七、第一次考试复习
- excel高级筛选怎么用_Excel高级筛选系列教程(完整版)-第一期基础功能介绍
- vue网页打印针式打印机内容显示不全
- php swoole 教程,PHP7安装Swoole详细教程
- uc游览器 android系统,手机UC浏览器2019最新版
- Windows-电脑蓝屏问题
- 如何使用Mock进行单元测试
热门文章
- 基础笔记6(exception)
- 16位模式/32位模式下PUSH指令探究——《x86汇编语言:从实模式到保护模式》读书笔记16...
- 《梦断代码》读后感一
- UA PHYS515A 电磁理论IV 时变电磁场理论2 Helmholtz方程与含时的Green函数
- 首次安装Revit失败
- MFC CAsyncSocket类基本使用 - 1
- GIS可视性分析概述
- .net (object sender, EventArgs e) 学习总结
- 图解SQLite教程
- mysql下sql语句 update 字段=字段+字符串