python3 第十七章 - sequence(序列)
之前我们在讲for循环语句时就提到过序列,那么什么是序列(sequence)?
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 —— 它的索引(位置),第一个索引是0,第二个索引是1,依此类推。
- Python有6个序列的内置类型:列表、元组、字符串、Unicode字符串、buffer对象、range对象(在python3中取消了range,同时将xrange重新命名成range)。
- 序列都可以进行的操作:索引、切片(分片)、序列相加、乘法、成员资格(检查成员)、长度、最小值和最大值
1. 索引
序列中所有的元素都是有编号的--从0开始递增。可以通过编号分别对序列的元素进行访问。Python的序列也可以从右边开始索引,最右边的一个元素的索引为-1,向左开始递减。
实例:
- greeting = 'Hello'
- print('greeting[2]', greeting[2])
- print('greeting[-1]', greeting[-1])
- language = ['c', 'c++', 'python', 'c#']
- print('language[2]', language[2])
以上代码,输出:
- greeting[2] l
- greeting[-1] o
- language[2] python
2、切片
索引用来对单个元素进行访问,用切片可以对一定范围内的元素进行访问,切片通过冒号相隔的两个索引来实现。切片操作的实现需要提供两个索引作为边界,第一个索引的元素是包含在切片内的,第二个则不包含在切片内。
实例:
- number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- # 取索引为第二和第三的元素
- print('number[2:4]:', number[2:4])
- # 负数表明是从右开始计数
- print('number[-4:-1]:', number[-4:-1])
- # 把第二个索引置空,表明包括到序列结尾的元素
- print('number[-4:]:', number[-4:])
- # 同上,把第一个索引置空,表明包含序列开始的元素
- print('number[:3]:', number[:3])
- # 默认在分片的时候,步长为1,这样指定步长为1,和默认的效果一样
- print('number[0:10:1]:', number[0:10:1])
- # 这里指定步长为2,这样就会跳过某些序列元素
- print('number[0:10:2]:', number[0:10:2])
- # 步长也可以是负数,但是第一个索引一定要大于第二个索引
- print('number[10:0:-1]:', number[10:0:-1])
- print('number[10:0:-2]:', number[10:0:-2])
以上代码,输出:
- number[2:4]: [3, 4]
- number[-4:-1]: [7, 8, 9]
- number[-4:]: [7, 8, 9, 10]
- number[:3]: [1, 2, 3]
- number[0:10:1]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- number[0:10:2]: [1, 3, 5, 7, 9]
- number[10:0:-1]: [10, 9, 8, 7, 6, 5, 4, 3, 2]
- number[10:0:-2]: [10, 8, 6, 4, 2]
对于一个正数步长,Python会从序列的头部开始向右提取元素,直到最后一个元素,而对于负数步长,则是从序列的尾部开始向左提取元素,直到第一个元素
3、序列相加
- number = [1, 2, 3, 4, 5]
- number2 = [6, 7, 8, 9, 10]
- greeting = ['hello', 'world']
- greeting2 = ['python']
- print('number + number2:', number + number2)
- print('greeting + greeting2:', greeting + greeting2)
- print('number + greeting:', number + greeting)
以上代码,输出:
- number + number2: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- greeting + greeting2: ['hello', 'world', 'python']
- number + greeting: [1, 2, 3, 4, 5, 'hello', 'world']
从第三行的输出中我们可以看出,在python3.6中,不同数据类型的序列也是可以相加的,但你不要这么去使用,因为后面你用min和max找最小值和最大值时会报错。
4、乘法
用数字n剩以一个序列会生成新的序列,而在新的序列中,原来的序列将会被重复n次。
- number = [1, 2, 3, 4, 5]
- greeting = ['hello', 'world']
- print('number * 2:', number * 2)
- print('greeting * 3', greeting * 3)
以上代码,输出:
- number * 2: [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
- greeting * 3 ['hello', 'world', 'hello', 'world', 'hello', 'world']
5、成员资格
可以使用in运算符来检查一个值是否在序列中,如果在其中,就返回Ture,如果不在,就返回False。
- greeting = ['hello', 'world']
- if 'hello' in greeting:
- print('\'hello\' 在 greeting 中')
- else:
- print('\'hello\' 不在 greeting 中')
- if 'python' in greeting:
- print('\'python\' 在 greeting 中')
- else:
- print('\'python\' 不在 greeting 中')
以上代码,输出:
- 'hello' 在 greeting 中
- 'python' 不在 greeting 中
6、长度、最小值和最大值
内建函数len、min和max分别返回序列所包含的元素的数量,序列中的最小元素和序列中的最大元素。
- number = [1, 2, 3, 4, 5]
- greeting = ['hello', 'world']
- print('max(number):', max(number))
- print('min(number):', min(number))
- print('len(number):', len(number))
- print('max(greeting):', max(greeting))
- print('min(greeting):', min(greeting))
- print('len(greeting):', len(greeting))
以上代码,输出:
- max(number): 5
- min(number): 1
- len(number): 5
- max(greeting): world
- min(greeting): hello
- len(greeting): 2
python3 第十七章 - sequence(序列)的更多相关文章
- python3 第二十七章 - 内置函数之str相关
Python 的字符串常用内建函数如下: 序号 方法及描述 实例 1 capitalize()将字符串的第一个字符转换为大写 2 center(width, fillchar) 返回一个指定的宽度 ...
- 流畅python学习笔记:第十七章:并发处理
第十七章:并发处理 本章主要讨论Python3引入的concurrent.futures模块.在python2.7中需要用pip install futures来安装.concurrent.futur ...
- 【C++】《C++ Primer 》第十七章
第十七章 标准库特殊设施 一.tuple类型 tuple是类似pair的模板,每个pair的成员类型都不相同,但每个pair都恰好有两个成员. 不同的tuple类型的成员类型也不相同,一个tuple可 ...
- 进击的Python【第十七章】:jQuery的基本应用
进击的Python[第十七章]:jQuery的基本应用
- <构建之法>第十三章到十七章有感以及这个项目读后感
<构建之法>第十三章到十七章有感 第13章:软件测试方法有哪些? 主要讲了软件测试方法:要说有什么问题就是哪种效率最高? 第14章:质量保障 软件的质量指标是什么?怎么样能够提升软件的质量 ...
- 程序员编程艺术第三十六~三十七章、搜索智能提示suggestion,附近点搜索
第三十六~三十七章.搜索智能提示suggestion,附近地点搜索 作者:July.致谢:caopengcs.胡果果.时间:二零一三年九月七日. 题记 写博的近三年,整理了太多太多的笔试面试题,如微软 ...
- python 数据类型(sequence 序列、dictionary 词典、动态类型)
文章内容摘自:http://www.cnblogs.com/vamei 1.sequence 序列 sequence(序列)是一组有顺序的元素的集合 (严格的说,是对象的集合,但鉴于我们还没有引入“对 ...
- 《Linux命令行与shell脚本编程大全》 第二十七章 学习笔记
第二十七章:shell脚本编程进阶 监测系统统计数据 系统快照报告 1.运行时间 uptime命令会提供以下基本信息: 当前时间 系统运行的天数,小时数,分钟数 当前登录到系统的用户数 1分钟,5分钟 ...
- [汇编学习笔记][第十七章使用BIOS进行键盘输入和磁盘读写
第十七章 使用BIOS进行键盘输入和磁盘读写 17.1 int 9 中断例程对键盘输入的处理 17.2 int 16 读取键盘缓存区 mov ah,0 int 16h 结果:(ah)=扫描码,(al) ...
随机推荐
- 关于linux下的date日期,并以日期给文件命名
在linux的终端中,我们输入date后会有以下显示: 然后博主也扩展了一下date的基础用法: date + "%-": %y 输出年份的后2位:%Y 输出完整年份 %m 输出月 ...
- python实现类jq的json路径过滤
开发过程中访问接口时经常用到jq来过滤json,用着觉得不是很爽,于是自己搞一个舒服的 ^_^ 先说需求: 输入:参数1:被过滤对象(json.dict.list), 参数2:过滤路径 输出:过滤结果 ...
- 【SmartOS】轻量级多任务调度系统
SmartOS是一个完全由新生命团队设计的嵌入式操作系统,主要应用于智能家居.物联网.工业自动化控制等领域. ARM Cortex-M系列微处理器几乎全都做成单核心,对于业务逻辑较复杂的物联网就显得难 ...
- 从头开始基于Maven搭建SpringMVC+Mybatis项目(2)
接上文内容,本节介绍Maven的聚合和继承. 从头阅读传送门 互联网时代,软件正在变得越来越复杂,开发人员通常会对软件划分模块,以获得清晰的设计.良好的分工及更高的可重用性.Maven的聚合特性能把多 ...
- Codeforces 915E Physical Education Lessons
原题传送门 我承认,比赛的时候在C题上卡了好久(最后也不会),15min水掉D后(最后还FST了..),看到E时已经只剩15min了.尽管一眼看出是离散化+线段树的裸题,但是没有时间写,实在尴尬. 赛 ...
- Luogu P1231 教辅的组成
Luogu P1231 教辅的组成 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还 ...
- CCNA笔记(1)
一个最简单的图来了解网络结构 一个路由器经过数据传输,目标pc的网卡网线接受数据,使数据能交换,然后就连上了互联网
- 2017 Multi-University Training Contest - Team 9 1003&&HDU 6163 CSGO【计算几何】
CSGO Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- BZOJ:4333: JSOI2012 智者的考验
4333: JSOI2012 智者的考验 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 68 Solved: 18[Submit][Status][ ...
- HDU 1024 Max Sum Plus Plus【动态规划求最大M子段和详解 】
Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...