Python中有哪些内置序列类型?

文 | 菊子皮(转载请注明出处)

关注公众号:AIAS编程有道

同名B站:AIAS编程有道

环境:Python 3.7,VS Code

主要参考:《流畅的Python》

Python标准库用C实现了丰富的序列类型。根据存储的序列类型是否为对象的引用将其分为容器序列扁平序列

容器序列:list、tuple和collections.deque这些序列能存放不同类型的数据。

扁平序列:str、bytes、bytearray、memoryview和array.array,这类序列只能容纳一种类型。很多没见过,但对加快Python程序很有用。

容器序列存放的是它们所包含的任意类型的对象的引用,而扁平序列里存放的是值而不是引用。扁平序列其实是一段连续的内存空间。扁平序列其实更加紧凑,它里面只能存放诸如字符、字节和数值这种基础类型。

我们还有一种常用的分类,就是序列类型按照能否被修改来分类。

可变序列(MutableSequence):list、bytearray、array.array、collections.deque和memoryview。

不可变序列(Sequence):tuple、str和bytes。

下面用UML类图列举了collections.abc(抽象基类,Abstract Base Class,ABC))中的及各类(超类在左边,箭头从子类指向超类,斜体名称代表抽象类和抽象方法),我们能看出前者从后者那里继承了一些方法,这些基类可以帮助我们总结出那些完整的序列类型包含了哪些功能。

在这里插入图片描述

注:内置的序列类型并不是直接从Sequence和MutableSequence这两个抽象基类继承而来。

列表(list)是我们编写程序中使用最多的数据类型之一,它是一个可变序列,并且能同时存放不同类型的元素,下节将介绍列表推导(list comprehension)和生成器表达式(generator expression),懂了这两个,会有一种任督二脉被打通的感觉。


我的订阅号
发布了150 篇原创文章 · 获赞 220 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/meiqi0538/article/details/104312043