第7天:Python 数据结构--序列

python中的数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字、字符、甚至可以是其他数据结构 在Python中,最基本的数据结构是序列(列表和元组),序列中的每个元素都有一个序号(元素的具体位置),这个序号叫索引,索引下标从0开始,以此类推...... 本文着重介绍python的序列及其实际应用。

序列概览

  • Python中有6种内建的序列。其中列表和元组是最常见的类型。其他包括字符串、Unicode字符串、buffer对象和xrange对象。

  • 列表和元组的主要区别是列表可以修改,而元组不能,如果要根据要求来添加元素,这时候列表适用性会更好,但是当序列不能修改的时候,使用元组则更合适,使用元组与Python的运作方式相关。

  • 在python中几乎所有的情况下列表都可以替代元组,但是特殊情况不能(当使用元组作为字典的不可修改的键时,此时键不能修改,所以不能使用列表) 例如:

#定义一个学生序列
>>> stuinfo=['zhangsan','lisi','wangwu',18,20]

同时序列中还可以包含序列,例如数据库:database

#定义学生姓名和学生年龄,然后再定义一个属于自己的数据库将两个列表加入
>>> stuname=['zhangsan','lisi','wangwu']
>>> stuage=[18,20,16]
>>> database=[stuname,stuage]
>>> database
[['zhangsan', 'lisi', 'wangwu'], [18, 20, 16]]

注意: python还有一种名为容器(container)的数据结构,容器可以包含其他任意对象,容器主要包括序列和映射(例如:字典)两类。序列的每个元素都有自己的编号,而映射每个元素则有一个叫做“键”的名字。集合是另一种容器(在后面章节会作详细讲解)。

通用序列操作

python中所有序列类型都可以进行一些特定的操作,这些操作包括:索引、分片、相加、相乘以及检查某个元素是否属于序列的成员-->成员资格检测 除此之外,Python还有计算序列长度,找出最大和最小元素的内建函数。

1.索引

序列中所有元素都有编号,这些编号是从0开始,依次递增,访问这些元素通过下标即可访问,而这个编号就是索引,例如:
>>> database[0]
['zhangsan', 'lisi', 'wangwu']
>>> database[1]
[18, 20, 16]

#字符串序列的索引
>>> str='hello'
>>> str[0]
'h'
>>> str[1]
'e'

注意: 字符串就是一个由字符组成的序列,索引0指向第一个元素 以上这就是索引,所有序列中都可以通过元素编号的方式进行索引,当使用负数索引时,Python会从右边到左进行所有,-1是从序列的最后一个元素开始,如下:
#从最后一个元素开始
>>> str[-1]
'o'
#从倒数第二个元素开始
>>> str[-2]
'l'

2.分片

同样的和索引类似,分片是通过冒号操作来访问一定范围内的元素,例如:
# 构建一个序列tag,里面包含一个元素
>>> tag=['https://www.cnblogs.com/yangyuqig/p/10101663.html']

# 拿到这个元素后通过分片取出一个范围的值
>>> tag[0][0:24]
'https://www.cnblogs.com/'

由上所知,分片操作的的实现需要提供两个索引作为边界,是一个左闭右开的区间,也就是第1个索引包含在分片内,而第2个索引不包含在这个分片内,例如:

>>> num=[1,2,3,4,5,6,7,8,9,10]
# 表示从第四个到最后一个元素
>>> num[3:10]
[4, 5, 6, 7, 8, 9, 10]
除了上述方案,也可以通过显示方式进行操作:
2.1 分片快捷操作
>>> num[0:3]
# 取到前面3个数据
[1, 2, 3]
2.2 分片步长操作
分片操作可以给元素设置步长,在开始和结束的时候指定相应步长获取元素,例如:
# 按照步长为2返回第1个和第6个之间的元素
>>> num[0:6:2]
[1, 3, 5]
另外需要注意的是负数步长是从元素尾部到前遍历整个序列,所以负数的分片开始索引一定要大于结束索引
>>> num[7:-1]
[8, 9]
当开始索引和结束索引是负数时开始所以必须小于结束索引:
>>> num[-9:-1]
[2, 3, 4, 5, 6, 7, 8, 9]
对于一个正数步长,Python会从序列的头部开始向右提取元素,直达最后一个元素,而对于负数步长,则是从序列的尾部开始向左提取元素,直达提取到第一个,例如:
# 提取前6个元素,步长为2
>>> num[:6:2]
[1, 3, 5]
# 提取从后往前的8个元素,步长为2
>>> num[:2:-2]
[10, 8, 6, 4]

3.序列相加

序列相加通过加号“+”进行序列和序列之间的连接操作:
>>> 'hello'+' world !'
'hello world !'

>>> [1,2,3]+['zhangsan','lisi','wangwu']
[1, 2, 3, 'zhangsan', 'lisi', 'wangwu']

注意:只有相同类型的序列才能进行连接操作。

4.序列相乘

一个数字x乘以一个序列会产生一个新的序列,原来的序列会被重置成x次
>>> ['hello'+' world !']*3
['hello world !', 'hello world !', 'hello world !']

5.成员资格

检查一个元素是否在一个序列中使用运算符in进行检查, in运算符返回检查某个条件的布尔值,若为真返回true,否则返回false,例如:
>>> str='hello'
>>> 'h' in str
True

>>> 'x' in str
False

6.序列长度、最大值和最小值

序列长度、最大值和最小值使用内建函数len、max、min进行检测,len返回序列中所包含的元素数量,max和min分别返回序列中最大值和最小值的元素
>>> len([11,34,23])
3
>>> max(11,34,23)
34
>>> min(11,34,23)
11

总结

本节给大家介绍了 Python  数据结构之序列的使用,对 Python 工程师使用提供了支撑,可以在项目中实际应用中取出相应元素。
系列文章
(0)

相关推荐

  • 说说Python中切片是什么?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • Python | 有序序列中元素的查找问题解决方法

    问题描述示例:如何查找有序序列中某一的元素输入:[1,2,3,4,5,6,--,100]   61 #查找的元素输出:61解决方案查找元素.一般地,我们可以用for循环进行遍历,再用if语句进行查找. ...

  • Python数据结构与算法(9)——优先级队列queue例程

    https://m.toutiao.com/is/euqcKx5/ 前言 queue库提供了一个适用于多线程编程的先进先出(FIFO)数据结构,可以用来在生产者与消费者线程之间安全地传递消息或其他数据 ...

  • 太过瘾了,最全的Python数据结构总结,太干货了!

    转自:菜鸟学Python 周围越来越多的人开始学习Python,Python确实入门容易,但是精通很难.因为Python 非常灵活,对于同一件事情Python有很多种解法,技巧性非常强. 今天小编整理 ...

  • 3种Python数据结构,13种创建方法,这个总结,超赞!

    Python常用的数据结构,有如下几种.但是我们用的最多的,还是字符串.列表.字典这3种. 其实学习任何一门编程语言,最基础的就是学习它的数据结构. 拿Python说,数据结构的概念也是超级重要,不同 ...

  • 3种Python数据结构,13种创建方法

    Python常用的数据结构,有如下几种.但是我们用的最多的,还是字符串.列表.字典这3种. 其实学习任何一门编程语言,最基础的就是学习它的数据结构. 拿Python说,数据结构的概念也是超级重要,不同 ...

  • Python中什么是有序序列?列表元组及字符串

    Q:Python中的列表.元组.字符串是有序序列吗? A:当然,列表.元组.字符串是Python中的有序序列,其中列表是可变对象,元组和字符串是不可变对象,接下来我们一起来看看具体的内容介绍吧. 什么 ...

  • python基本数据结构

    文章目录 列表list 访问列表中的值 更新列表 删除列表元素 列表脚本操作符 列表截取与拼接 嵌套列表 直接赋值 浅拷贝 深拷贝 列表函数&方法 列表函数 **sorted(iterable ...

  • 数据结构与算法-Python语言案例实现

    AI研习图书馆,发现不一样的世界 十大经典排序算法 -- 基于Python案例实现[下] 目录 数据结构与算法-Python语言案例实现 一. 引言 1.问题需求 2.方法分类 二.常见排序方法 1. ...

  • Python编程基础:序列类型概述

    https://m.toutiao.com/is/eYtBNf7/ 序列首先是一种数据存储方式,用来存储一系列的数据.序列存储数据的主要特点就是数据在内存空间中是连续存储的,例如字符串abc(字符串属 ...