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序列类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mac下PyCharm快捷键分享

    Mac下PyCharm快捷键分享

    这篇文章主要介绍了Mac下PyCharm快捷键,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • ​python中pandas读取csv文件​时如何省去csv.reader()操作指定列步骤

    ​python中pandas读取csv文件​时如何省去csv.reader()操作指定列步骤

    这篇文章主要介绍了​python中pandas读取csv文件​时如何省去csv.reader()操作指定列步骤,对正在工作的你可能有一定的帮助,需要的朋友可以参考一下
    2022-01-01
  • python PyAutoGUI实现自动化鼠标键盘等常用操作

    python PyAutoGUI实现自动化鼠标键盘等常用操作

    这篇文章主要介绍了python PyAutoGUI实现自动化鼠标键盘等常用操作使用实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • python数学模块(math/decimal模块)

    python数学模块(math/decimal模块)

    这篇文章主要介绍了python数学模块(math/decimal模块),文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 基于python实现新春烟花盛宴效果

    基于python实现新春烟花盛宴效果

    这篇文章给大家用Python绽放了一场新春烟花盛宴,这里提前祝大家新春快乐呀,文中通过代码示例给大家介绍的非常详细,感兴趣的小伙伴可以自己动手尝试一下
    2024-02-02
  • 详解Python中的日志模块logging

    详解Python中的日志模块logging

    这篇文章主要介绍了Python中的日志模块logging,包括Python下的日志级别以及模块内常用方法的使用,需要的朋友可以参考下
    2015-06-06
  • Python教程之生产者消费者模式解析

    Python教程之生产者消费者模式解析

    在并发编程中使用生产者和消费者模式能够解决大不多的并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度
    2021-09-09
  • python使用PythonMagick将jpg图片转换成ico图片的方法

    python使用PythonMagick将jpg图片转换成ico图片的方法

    这篇文章主要介绍了python使用PythonMagick将jpg图片转换成ico图片的方法,涉及PythonMagick模块操作图片的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Numpy中的mask的使用

    Numpy中的mask的使用

    这篇文章主要介绍了Numpy中的mask的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Python 遍历字典的8种方法总结

    Python 遍历字典的8种方法总结

    遍历字典是Python中常见的操作,可以很方便的访问字典中的键和值,以执行各种任务,本文将介绍Python中遍历字典的8种方法,包括for循环、字典方法和推导式等,需要的朋友可以参考下
    2023-10-10

最新评论