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实现socket端口重定向示例
Feb 10 Python
浅析Python中的序列化存储的方法
Apr 28 Python
详解在Python程序中使用Cookie的教程
Apr 30 Python
python 全文检索引擎详解
Apr 25 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
Jul 12 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
python线程定时器Timer实现原理解析
Nov 30 Python
python同义词替换的实现(jieba分词)
Jan 21 Python
python如何变换环境
Jul 21 Python
python制作微博图片爬取工具
Jan 16 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
Jun 11 Python
Python实现数据的序列化操作详解
Jul 07 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
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
php ajax实现文件上传进度条
2016/03/29 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
jquery获得下拉框值的代码
2011/08/13 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
python 列表删除所有指定元素的方法
2018/04/19 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
python2 对excel表格操作完整示例
2020/02/23 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
python import 上级目录的导入
2020/11/03 Python
Linux上比较文件的命令都有哪些
2012/02/24 面试题
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
证婚人经典证婚词
2014/01/09 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
教师工作总结范文2014
2014/11/10 职场文书
2014年信用社工作总结
2014/11/25 职场文书
移除Selenium中window.navigator.webdriver值
2022/06/10 Python