Python序列数据类型详解:列表、元组与字节操作指南

陆景行
陆景行
发布时间:2026-10-15| 4人浏览过
原创

本文深入解析Python中的序列数据类型,涵盖列表、元组、字符串及字节序列的核心特性。详细讲解序列的通用函数、索引切片、排序拆分等操作方法,并对比可变与不可变序列的差异,提供代码示例与最佳实践,帮助开发者高效掌握Python数据结构。

在前文介绍Python数据类型时,我们已涵盖内置数值类型与字符串类型。本文将重点探讨Python的序列数据类型。值得注意的是,Python原生并未提供独立的数组数据结构,也不具备直接创建数组的功能,但可以通过内置的序列数据类型来实现类似数组的部分功能。

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

序列数据类型是Python中的一种基础数据结构,本质上是有序元素的集合。该集合可以包含多个元素,也可以为空。常见的序列类型包括元组(tuple)、列表(list)、字符串(str)以及字节数据(bytes与bytearray)。若依据对象是否可变进行划分,序列可分为可变序列与不可变序列两类。

可变序列包括列表和字节数组;不可变序列则包括字符串、元组和字节序列。

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

1.序列的通用方法

支持序列类型的内置函数包括len()、max()、min()和sum()。其中,使用sum()函数时要求序列必须为数值型,若包含非数值型元素(如字符串或字节数据),程序将抛出TypeError异常。其余函数在处理字符时,均按照字典序进行比较和筛选。

2.通过索引访问数据

序列中的各类对象均为可迭代对象,可直接使用for循环遍历获取每个数据。此外,也可通过下标索引获取指定位置的数据。序列的第一个元素表示为X[0],最后一个元素表示为X[len(X)-1]。若序列下标越界或非整数类型,将引发异常。序列同样支持切片操作,具体示例如下:

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

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

序列可使用操作符+连接两个序列,生成一个新的序列对象。此外,还可利用*运算符实现序列的重复拼接。

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参数用于指定计算比较键值的函数。

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

  • 这两个函数用于判断序列中所有数据是否全为真值。
  • 对于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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。