Python语言中的数据类型-序列


Posted in Python onFebruary 24, 2022

前言:
前面我们提到了Python数据类型中的内置数值类型与字符串类型。今天学习一下Python的序列数据类型,要知道的是在Python中没有数组这一数据结构,也没有提供直接创建数组的功能,但是可以使用内置的序列数据类型实现数组的某些功能。

一、什么是序列数据类型?

序列数据类型是Python中的一种基础的数据结构,是一组有顺序的元素的集合。
这个集合内可以有多个元素也可以不包含元素。
总的来说包含元组(tuple)、列表(list)、字符串(str)、字节数据(bytesbytearray
如果根据对象可变不可变进行划分的话

可变序列为:列表、字节数组
不可变序列为:字符串、元组、字节序列

二、序列数据类型的基本操作

1.序列的通用方法

支持序列类型的内置函数:len()max()min()sum()。其中使用sum()函数的时候
必须是数值型序列,如果有非数值型的序列则将抛出TypeError,对于字符串、字节数
据也会导致该结果。其余函数在使用的时候对字符按照字典序进行挑选。

2.通过索引访问数据

序列中的各个类型均是可以迭代的对象,可以直接使用for 循环进行迭代获取每一个数据。也可以通过下标索引进行指定位置上的数据获取。序列的第一个元素是X[0],序列的最后一个元素是X[len(X)-1]。序列的下标越界或者不是整数均会导致异常。
序列还支持切片操作,如下:

st="asfdcac"
#打印所有的数据
print(st[::])
#逆序打印字符串
print(st[-1::-1])

3.同类型的序列进行拼接

序列可以使用操作符+连接两个序列,形成一个新的序列对象。也可以通过*进行序列的重复。

Python语言中的数据类型-序列

4.判断序列成员

在本文中前面提到了可以使用循环对序列进行迭代,找出每一个元素除了这一功能,Python中还有直接判断序列中是否包含某成员

语法规则如下:

  • x in s【如果x在序列s中则为True】
  • x not in s【如果x不在序列s中为True】
  • s.count(x)【统计X在序列s中出现的次数】
  • s.index(X)【找到X在s中第一次出现的坐标,找不到就报错】

5.序列的排序操作

通过内置函数sorted()可以对序列进行排序,并将排序后的结果进行返回。

def sorted(*args, **kwargs):

这里可以传参一个可迭代的序列,reverse可以指定升序还是降序当reverse为True时排序结果为降序。key参数是用于计算比较键值的函数

Python语言中的数据类型-序列

6.内置函数all()与any()

  • 这两个函数的作用就是判断所有的数据是否全为True
  • 对于all()而言所有的成员均为True时结果才为True
  • 对于any()而言只要有成员为True时结果就为True

7.序列的拆分

①有限个数变量进行序列的拆分

在本方法下要确定序列的成员个数与接受变量个数保持一致。

变量1,变量2,变量3=序列

②不确定个数成员变量进行拆分

本方法使用与接受序列中特定位置的成员,使用*进行不确定个数成员变量的接受。
每次拆分*控制的变量只允许出现一次。

例如:

    mystr="nfklsdnfj0sd.....asdfl"
    s1,*args,s2=mystr

   此时s1,s2会分别接收n与l其余的将会让args进行接受。

三、列表

列表的介绍:

前面提到了列表是一个可变的序列,意思就是可以直接对列表对象本身进行修改删除等操作
列表还是Python中一组有序的数据结构,在Python中没有数组,可以使用列表起数组的作用(✪ω✪)

1.创建列表

有三种方法:

  • 1.字面量直接创建
  • 2.使用list()与可迭代对象创建
  • 3.列表解析表达式

代码如下:

# 直接声明
lis0=list(i for i in range(0,101,10))
print(lis0)
lis1=[1,2,3,4]
# 迭代器进行声明
lis2=[ i for i in range(0,101,10)]
print(lis1,lis2)
#字面量
lis3=['Hello',123,'print',bool]
print(lis3)
'''

2.向列表内添加数据

代码如下:

# 直接在列表末尾添加
lis1.append(2)
print(lis1)
# 切片法添加元素(直接追加另外一个列表的一部分元素)内存地址不变
print(id(lis1))
lis1.extend(lis2)
lis1.extend(lis2[1:5])
print(lis1,id(lis1))
# 在指定的位置插入指定的元素999
lis1.insert(1,999)
print('11111111111',lis1)

3.删除列表内的数据

代码如下:

# 什么也不填,默认删除的是列表的最后一个元素
lis1.pop()
print(lis1)
# 将列表内的指定下标元素进行删除
lis1.pop(1)
print(lis1)
# 删除指定的元素
lis1.remove(80)
print(lis1)
# 切片法删除元素
# 切片法删除元素后,列表的地址会发生改变*****
print(id(lis1),id(lis1[1:4]),lis1[1:4])
lis1[1:4]
# 清空列表
lis1.clear()
print(lis1)
# 删除列表(再使用该列表的时候会报错)
del lis1
# print(lis1)
'''列表内元素的修改'''
print(lis2)
# 对指定索引的元素进行修改
lis2[0]=100
print(lis2)
# 切片法修改一段列表
# 会将新指定的列表,替换掉指定索引区间的元素,区间超出的话,会直接在末尾添加
# 切片内的元素个数,与所要改成的切片元素个数,不一致没关系直接进行替换
lis2[10:]=[1,2,3]
print(lis2)
# del也可以对指定位置元素进行删除
del lis[1]
del lis[2:4]
# 也可以直接对列表的某段进行赋空[]达到删除的效果
lis2[2:4]=[]

三、元组

元组是不可变序列,所以不支持增删,这里仅仅对他的特性以及注意点进行介绍。

元组也是一组有序序列,包含零个或多个对象的引用,与列表十分相似但又有许多不同.

具体来说有以下特点:

元组是不可变序列仅支持读取

  • 1、不支持添加元素【增】
  • 2、不支持删除元素【删】
  • 3、不支持修改元素(修改操作的步骤是:先删除、再添加)【改】
  • 4、支持2种查找元素【查】
    • a、根据下标查找元素,常称为【访问】元素,时间复杂度为O(1)
    • b、根据元素获取下标,常称为【查找】元素,时间复杂度为O(n)

如果元组中只有一个数据,那么数据后的逗号不可省略元组的括号可以省略。

元祖的声明与遍历如下:

# 元组的声明一
s=('Tom',666,'嗨')
print(s,type(s))
# 元组的声明二
p=tuple(('Tom',666,'嗨'))
print(p)
# 空元组
ss=()
print(ss,type(ss))
# 单元素元组--要加,否则会会直接转换成字符串类型
sss=('fuck')
print(sss,type(sss))
# 元组的括号可以省略
sss='fuck',
print(sss,type(sss))
tp=('nabd',['123',123],'李四')
print(tp)
# 元组对应位置的元素不会变,但元组对应位置元素里面的内容可以改变
tp[1].insert(1,666)
print(tp)
# 元组的遍历
for temp in s:
    print(temp)

四、字符串

前面一篇博客已经提到过字符串了,这里就不再啰嗦一遍了。

五、字节序列

字节序列可以分为可变字节序列(bytearray)与不可变字节序列(bytes)。
使用字面量生成字节数列只需要在字符串前加上b即可。

eg:
str1=b"Hello world"

也可以使用bytes()或者bytearray()进行字节序列的声明
其中参数可以传递可迭代对象,只不过可迭代对象的成员要是在0-255的整数。
bytes或者bytearray的方法不接受字符串参数,只接受对应类型的参数。否则报错
字节序列支持序列的基本操作。
可以通过字符串编码得到字节序列,也可以通过解码字符序列得到字符串
使用的函数是decode()encode()。使用过程要注意编码、解码规则。

总结:
本篇博客针对Python序列进行了讲解。序列在学习使用Python中还是经常使用的,希望大家好好掌握,

到此这篇关于Python语言中的数据类型-序列的文章就介绍到这了,更多相关Python语言中的序列内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 命令行非阻塞输入的小例子
Sep 27 Python
python获取图片颜色信息的方法
Mar 18 Python
使用Python的Tornado框架实现一个一对一聊天的程序
Apr 25 Python
简单介绍Python中的readline()方法的使用
May 24 Python
python魔法方法-属性访问控制详解
Jul 25 Python
Python实现的手机号归属地相关信息查询功能示例
Jun 08 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
Python判断是否json是否包含一个key的方法
Dec 31 Python
Python:合并两个numpy矩阵的实现
Dec 02 Python
学会python自动收发邮件 代替你问候女友
May 20 Python
python如何进行矩阵运算
Jun 05 Python
python opencv肤色检测的实现示例
Dec 21 Python
浅析python中特殊文件和特殊函数
Feb 24 #Python
Python中字符串对象语法分享
Feb 24 #Python
Python+Matplotlib+LaTeX玩转数学公式
Python语言内置数据类型
Feb 24 #Python
Python中的程序流程控制语句
Feb 24 #Python
python中对列表的删除和添加方法详解
Feb 24 #Python
通过Python把学姐照片做成拼图游戏
You might like
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
vuex的使用步骤
2021/01/06 Vue.js
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
在Python中使用异步Socket编程性能测试
2014/06/25 Python
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
python 一个figure上显示多个图像的实例
2019/07/08 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
使用Python实现分别输出每个数组
2019/12/06 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
外贸销售员求职的自我评价
2013/11/23 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
爱我中华教学反思
2014/04/28 职场文书
学校运动会霸气口号
2014/06/07 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
地陪导游欢迎词
2015/01/26 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers