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的网络编程库Gevent的安装及使用技巧
Jun 24 Python
python对象及面向对象技术详解
Jul 19 Python
Python 内置函数complex详解
Oct 23 Python
聊聊Python中的pypy
Jan 12 Python
python 动态生成变量名以及动态获取变量的变量名方法
Jan 20 Python
python对常见数据类型的遍历解析
Aug 27 Python
Win下PyInstaller 安装和使用教程
Dec 25 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
Mar 13 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
详解Python高阶函数
Aug 15 Python
解决pytorch 模型复制的一些问题
Mar 03 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
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
简述vue路由打开一个新的窗口的方法
2018/11/29 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
简明 Python 基础学习教程
2007/02/08 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
Python中字符串与编码示例代码
2019/05/20 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
关于工资低的辞职信
2014/01/14 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
初中三好学生自我鉴定
2014/04/07 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
刘胡兰观后感
2015/06/16 职场文书
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏