python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python序列类型

python序列类型的实现示例

作者:珠峰日记

Python序列类型分为不可变序列和可变序列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

一、序列类型的分类

1. 不可变序列(Immutable Sequences)

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

2. 可变序列(Mutable Sequences)

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

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

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()等修改方法

具体类型的继承实现

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

共性(所有序列)

差异

特性不可变序列(如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序列类型以抽象基类为骨架,分为不可变和可变两类:

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

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

您可能感兴趣的文章:
阅读全文