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 BeautifulSoup设置页面编码的方法
Apr 03 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
Python 忽略warning的输出方法
Oct 18 Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
python创建与遍历List二维列表的方法
Aug 16 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
Django数据库迁移常见使用方法
Nov 12 Python
Python数据分析之pandas函数详解
Apr 21 Python
Python一行代码实现自动发邮件功能
May 30 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 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
模拟OICQ的实现思路和核心程序(二)
2006/10/09 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
从setTimeout看js函数执行过程
2017/12/19 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
python时间整形转标准格式的示例分享
2014/02/14 Python
对Python中数组的几种使用方法总结
2018/06/28 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
python实现简单的学生管理系统
2021/02/22 Python
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
普天C++笔试题
2016/03/20 面试题
师范生个人推荐信
2013/11/29 职场文书
老同学聚会感言
2014/02/23 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
放假通知
2015/04/14 职场文书
世界文化遗产导游词
2019/08/07 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL