python序列类型的实现示例

作者:

文章目录
  • Python通过collections.abc模块定义抽象基类(ABC),规定序列类型的接口标准,具体类型继承或实现这些抽象基类的方法。
  • 通过继承抽象基类(如Sequence或MutableSequence),可快速实现自定义序列,只需重写必要方法: 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 序列类型list示例详解 python语法 range() 序列类型range python序列类型种类详解 Python序列类型的打包和解包实例 Python学习笔记基本数据结构之序列类型list tuple range用法分析
  • 目录
    • 一、序列类型的分类
      • 1. 不可变序列(Immutable Sequences)
      • 2. 可变序列(Mutable Sequences)
    • 二、序列类型的继承关系(基于抽象基类)
      • 核心抽象基类层级
      • 各抽象基类的关键方法
      • 具体类型的继承实现
    • 三、序列类型的共性与差异
      • 共性(所有序列)
      • 差异
    • 四、自定义序列类型
      • 总结

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

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

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

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

        • 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 序列类型list示例详解
        • python语法 range() 序列类型range
        • python序列类型种类详解
        • Python序列类型的打包和解包实例
        • Python学习笔记基本数据结构之序列类型list tuple range用法分析

        站内搜索