python序列类型的实现示例

 更新时间:2025年12月25日 10:15:41   作者:珠峰日记  
Python序列类型分为不可变序列和可变序列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

序列类型(Sequence Types)可变序列不可变序列collections.abc

一、序列类型的分类

1. 不可变序列(Immutable Sequences)

创建后无法修改元素的序列,核心类型包括:

  • str:字符串(Unicode字符序列)
  • tuple:元组(异构元素序列)
  • bytes:字节序列(不可变)
  • range:整数范围序列(动态生成,不可变)

2. 可变序列(Mutable Sequences)

创建后可修改元素的序列,核心类型包括:

  • list:列表(异构元素序列)
  • bytearray:字节数组(可变字节序列)
  • array.array:数组(同构数值序列,需导入array模块)
  • collections.deque:双端队列(高效增删的可变序列)

二、序列类型的继承关系(基于抽象基类)

Python通过collections.abc模块定义抽象基类(ABC),规定序列类型的接口标准,具体类型继承或实现这些抽象基类的方法。

核心抽象基类层级

Iterable(可迭代)
    ↓
Collection(集合,Python 3.6+)
    ↓
Sequence(序列)
    ├── MutableSequence(可变序列)
    └── ImmutableSequence(不可变序列,Python 3.3+)

各抽象基类的关键方法

抽象基类核心方法/特性
Iterable需实现__iter__(),支持for循环迭代
Collection继承Iterable+Sized(__len__())+Container(__contains__())
Sequence继承Collection,需实现__getitem__()和__len__(),支持索引、切片、index()、count()
ImmutableSequence继承Sequence,无修改方法(如__setitem__())
MutableSequence继承Sequence,需实现__setitem__()、__delitem__()、append()等修改方法

具体类型的继承实现

  • 不可变序列类型:
    str、tuple、bytes、range 均实现 ImmutableSequence 接口(或直接继承Sequence并禁用修改方法)。
    例如,tuple 继承关系:tuple → Sequence → Collection → Iterable。

  • 可变序列类型:
    list、bytearray、array.array、collections.deque 均实现 MutableSequence 接口。
    例如,list 继承关系:list → MutableSequence → Sequence → Collection → Iterable。

三、序列类型的共性与差异

共性(所有序列)

  • 支持索引访问:seq[index]
  • 支持切片:seq[start:end:step]
  • 支持长度计算:len(seq)
  • 支持成员判断:x in seq
  • 支持拼接:seq1 + seq2(不可变序列拼接生成新对象,可变序列可原地扩展)
  • 支持重复:seq * n

差异

特性不可变序列(如tuple/str)可变序列(如list/deque)
元素修改不支持(seq[index] = x报错)支持
原地操作无(如append()/pop())支持
内存效率更高(固定大小)较低(动态扩容)
哈希性可哈希(可作为字典键)不可哈希

四、自定义序列类型

通过继承抽象基类(如SequenceMutableSequence),可快速实现自定义序列,只需重写必要方法:

from collections.abc import MutableSequence

class MyList(MutableSequence):
    def __init__(self, data):
        self.data = list(data)
    
    def __getitem__(self, index):
        return self.data[index]
    
    def __setitem__(self, index, value):
        self.data[index] = value
    
    def __delitem__(self, index):
        del self.data[index]
    
    def __len__(self):
        return len(self.data)
    
    def insert(self, index, value):
        self.data.insert(index, value)

# 使用自定义序列
ml = MyList([1,2,3])
ml.append(4)  # 继承MutableSequence的方法
print(ml[2])  # 输出3

总结

Python序列类型以抽象基类为骨架,分为不可变和可变两类:

  • 不可变序列:str/tuple/bytes/range,继承ImmutableSequence;
  • 可变序列:list/bytearray/deque/array,继承MutableSequence。

这种设计既保证了接口一致性,又通过抽象基类明确了不同序列的行为约束。

到此这篇关于python序列类型的实现示例的文章就介绍到这了,更多相关python序列类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python内建类型与标准类型

    python内建类型与标准类型

    这篇文章主要介绍了python内建类型与标准类型,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Pandas数据集的分块读取的实现

    Pandas数据集的分块读取的实现

    本文主要介绍了Pandas数据集的分块读取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Python中常用的数据结构与算法优化技巧指南

    Python中常用的数据结构与算法优化技巧指南

    Python是一种强大而灵活的编程语言,它提供了丰富的数据结构和算法库,但是在处理大规模数据或者需要高效运行的情况下,需要考虑一些优化技巧,本文将介绍一些Python中常用的数据结构与算法优化技巧,需要的朋友可以参考下
    2024-05-05
  • Python中字典的相关操作介绍

    Python中字典的相关操作介绍

    大家好,本篇文章主要讲的是Python中字典的相关操作介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • Python提取频域特征知识点浅析

    Python提取频域特征知识点浅析

    在本文里我们给大家分享了关于Python提取频域特征的相关知识点以及基础内容,需要的朋友们跟着学习下。
    2019-03-03
  • Python可视化神器pyecharts绘制仪表盘

    Python可视化神器pyecharts绘制仪表盘

    这篇文章主要介绍了Python可视化神器pyecharts绘制仪表盘,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • python基于三阶贝塞尔曲线的数据平滑算法

    python基于三阶贝塞尔曲线的数据平滑算法

    这篇文章主要介绍了python基于三阶贝塞尔曲线的数据平滑算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Python django框架应用中实现获取访问者ip地址示例

    Python django框架应用中实现获取访问者ip地址示例

    这篇文章主要介绍了Python django框架应用中实现获取访问者ip地址,涉及Python Request模块相关函数使用技巧,需要的朋友可以参考下
    2019-05-05
  • Python线程池thread pool创建使用及实例代码分享

    Python线程池thread pool创建使用及实例代码分享

    这篇文章主要介绍了Python线程池(thread pool)创建使用及实例代码分享,文章围绕主题展开详细的内容介绍具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • Python实现的生产者、消费者问题完整实例

    Python实现的生产者、消费者问题完整实例

    这篇文章主要介绍了Python实现的生产者、消费者问题,简单描述了生产者、消费者问题的概念、原理,并结合完整实例形式分析了Python实现生产者、消费者问题的相关操作技巧,需要的朋友可以参考下
    2018-05-05

最新评论