之前我们在讲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(序列)的更多相关文章

  1. python3 第二十七章 - 内置函数之str相关

    Python 的字符串常用内建函数如下: 序号 方法及描述 实例 1 capitalize()将字符串的第一个字符转换为大写   2 center(width, fillchar) 返回一个指定的宽度 ...

  2. 流畅python学习笔记:第十七章:并发处理

    第十七章:并发处理 本章主要讨论Python3引入的concurrent.futures模块.在python2.7中需要用pip install futures来安装.concurrent.futur ...

  3. 【C++】《C++ Primer 》第十七章

    第十七章 标准库特殊设施 一.tuple类型 tuple是类似pair的模板,每个pair的成员类型都不相同,但每个pair都恰好有两个成员. 不同的tuple类型的成员类型也不相同,一个tuple可 ...

  4. 进击的Python【第十七章】:jQuery的基本应用

    进击的Python[第十七章]:jQuery的基本应用

  5. <构建之法>第十三章到十七章有感以及这个项目读后感

    <构建之法>第十三章到十七章有感 第13章:软件测试方法有哪些? 主要讲了软件测试方法:要说有什么问题就是哪种效率最高? 第14章:质量保障 软件的质量指标是什么?怎么样能够提升软件的质量 ...

  6. 程序员编程艺术第三十六~三十七章、搜索智能提示suggestion,附近点搜索

    第三十六~三十七章.搜索智能提示suggestion,附近地点搜索 作者:July.致谢:caopengcs.胡果果.时间:二零一三年九月七日. 题记 写博的近三年,整理了太多太多的笔试面试题,如微软 ...

  7. python 数据类型(sequence 序列、dictionary 词典、动态类型)

    文章内容摘自:http://www.cnblogs.com/vamei 1.sequence 序列 sequence(序列)是一组有顺序的元素的集合 (严格的说,是对象的集合,但鉴于我们还没有引入“对 ...

  8. 《Linux命令行与shell脚本编程大全》 第二十七章 学习笔记

    第二十七章:shell脚本编程进阶 监测系统统计数据 系统快照报告 1.运行时间 uptime命令会提供以下基本信息: 当前时间 系统运行的天数,小时数,分钟数 当前登录到系统的用户数 1分钟,5分钟 ...

  9. [汇编学习笔记][第十七章使用BIOS进行键盘输入和磁盘读写

    第十七章 使用BIOS进行键盘输入和磁盘读写 17.1 int 9 中断例程对键盘输入的处理 17.2 int 16 读取键盘缓存区 mov ah,0 int 16h 结果:(ah)=扫描码,(al) ...

随机推荐

  1. CSS制作波浪线

    建议先去了解清楚了径向渐变,线性渐变的用法先 这个作者的css制作波浪线讲解很不错额:https://www.jianshu.com/p/8570433e3669不理解的可以看看这个链接的额 可以去菜 ...

  2. 地址总线、数据总线、寻址能力、字长及cpu位数等概念之间的关系

    地址总线决定了CPU的寻址能力:数据总线的宽度与字长及CPU位数一致. 详细解释见下文: 1.地址总线与寻址能力 要存取数据或指令就要知道数据或指令存放的位置,地址寄存器存储的就是CPU当前要存取的数 ...

  3. Android异常分析(转)

    关于异常 异常? 异常就是一种程序中没有预料到的问题,既然是没有预料到的,就可能不在原有逻辑处理范围内,脱离了代码控制,软件可能会出现各种奇怪的现象.比如:android系统常见异常现象有应用无响应. ...

  4. Python如果导出失败,pass函数功能

    由于服务器中有一些模块不存在,在文件中导入这些模块时提示错误,导致本地运行正常,服务器测试不通过. 此时,需要捕捉ImportError,当导入的包不存在时,pass掉定义的功能. 示例代码: try ...

  5. ATM机运行代码

    实现代码: import java.util.Scanner; public class Atm { public static void main(String[] args) { // TODO ...

  6. MongoDB批量导入及简单的性能优化

    今天简单分享一下MongoDB使用过程中的一些性能优化,其实并不只适用MongoDB,其他数据库多少也可适用. 首先先随机导入一千万条数据.这里我分段导入的,因为mongo的BsonDocument一 ...

  7. Linux centos7系统下svn的安装与配置

    一.安装svn # yum -y install svn 二.查看svn版本信息 # svnserve --version 三.搭建svn版本库(假设项目名称为project) 1.首先创建版本库目录 ...

  8. Python编程笔记 - 列表

    这篇文章开始介绍Python中的容器.Python容器包括列表.元组.集合与字典.这些数据结构中都涉及到很多的方法,这里对比较常用的一些方法进行介绍,不用每个方法都记住,熟悉常用的即可. 首先,我们先 ...

  9. HttpClient 模拟发送Post和Get请求 并用fastjson对返回json字符串数据解析,和HttpClient一些参数方法的deprecated(弃用)的综合总结

    最近在做一个接口调用的时候用到Apache的httpclient时候,发现引入最新版本4.5,DefaultHttpClient等老版本常用的类已经过时了,不推荐使用了:去官网看了一下在4.3之后就抛 ...

  10. AccessibilityService+WindowManager+SurfaceView开系统权限

    一种通过自动获取用户权限增强产品体验的方法 本文是基于辅助功能+悬浮窗+SurfaceView来实现自动获取用户权限的具体方案设计与实现.辅助功能抢红包插件相信大家并不陌生,但是微信官方不允许,但是在 ...