序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。
另外,关于这个问题,面试官很容易引出另一个问题:python中的哪些数据类型是可变的,哪些是不可变的?
首先,可变/不可变是针对该对象所指向的内存中的值是否可变来判断的。如可变类型的数据类型有列表和字典,还有集合不可变类型的数据类型有字符串,元组,数字。
就举个最简单的数字的例子,python中有小整数池的概念,即[-5,256]范围内的整数,python解释器对他们做了特殊处理,都放在内存中的固定位置,不会因为你的操作二发生变化。
现在:a = 1 ,然后我们又重新对a赋值,a = 2,在重新赋值的过程中,整数1所对应的内存地址没有和数字的大小都没有发生变化,还在内存中的固定位置。整数2也是如此。变化的是a的指针(这里引用C中的概念)从指向数字1变成数字2。a对象指向的内存中的值没有发生变化,因此数字是不可变类型的数据类型。字符串,集合也是同理。