如何理解Python中的容器对象

Python014

如何理解Python中的容器对象,第1张

在某些对象中会包含对其它对象的引用,这样的对象被称作 容器 ( containers )。因此,我们可以把容器视作用于组织各种元素的数据结构。

下面是一些常见的容器对象:

另外,容器是存储在内存中的数据结构,并且通常会将全部的值都保存在内存中(也有一些特例,并不是所有的元素都放在内存,比如迭代器和生成器对象)。

在某些对象中会包含对其它对象的引用,这样的对象被称作容器(containers)。元组、列表、字典都属于容器。部分容器值可能是指向其它对象的引用。在大多数情况下,当谈到某个容器的值时,我们谈论的仅是值,而不是所包含的对象的 ID(identities);但是,在讨论容器的可变性时,则只是在谈论容器中直接包含的对象的 ID。因此,如果不可变容器(比如,元组)中包含了对可变对象的引用,那么当被引用的可变对象发生改变时,相应的容器值也将发生改变。

从技术角度来说,容器是实现了 __contains__ 方法的对象,也就是说容器对象肯定可以执行成员测试。

注意:尽管绝大多数容器都提供了某种方式来获取其中包含的每一个元素,但这并不是容器本身提供的能力,而是 iterable 赋予了容器这种能力。容器并不一定都是 iterable,比如: Bloom filter ,虽然 Bloom filter 可以检测某个元素是否存在于容器中,但是并不能从容器中获取其中的每一个值,因为 Bloom filter 并没有把元素存储在容器中,而是通过一个散列函数映射成一个值保存在数组中。

容器从字面意思上理解就是盛放,放置东西的盒子,python容器主要指的是列表、元组、字典和集合。

1、列表   list()

列表是可变的,列表中的元素允许是不同的数据类型的元素

2、元组  tuple()

元组是不可变类型,可以把元组理解为一个常量列表

3、字典  dict()

字典是可变数据类型,同列表一样,列表中的元素是有顺序的,区别在于:列表是按下标来进行查找元素的,当列表元素多的时候,查找起来就不是很方便了。而字典中的元素顺序不重要,而可以通过键来访问元素。

4、集合   set()

可以简单把集合理解为舍弃了值的字典,而且键与键之间也不允许重复。

几种数据结构的比较

都可以通关[]来对单个元素进行访问

字符串和元组是不可变数据类型,列表和字典是可变数据类型

这几种数据结构可以进行自由组合,形成更大更复杂的结构