高级数据类型

类型和变量一章中,我们介绍了Python中的基本数据类型,除字符串之外,它们都是不能再被再被可视化分割的最小单元。而Python中同样也提供了高级数据类型,用以存储多个的数据到一个对象中,这些高级数据类型根据结构来分成下面几类:

序列sequence

- 字符串 str
- 列表 list
- 元组 tuple
- range

集合set

- 集合 set

映射mapping

- 字典 dict

基本操作

高级数据类型的基本操作主要包括一系列对数据进行处理和管理的操作,这些操作通常涵盖了数据的增insert、删delete、改update、查index/slice/key,以及其内置方法的调用。

  • 创建:高级数据类型在使用之前需要先创建,可以使用声明变量的方式创建,也可以用推导式;
  • 增:增加新的数据到一个高级数据类型中;
  • 删:从高级数据类型中删除数据、或者删除整个高级数据类型;
  • 改:修改高级数据类型其中一个数据的值
  • 查:查找高级数据类型中的数据,主要有索引,切片和键值对查找;
  • 内置方法调用:每种高级数据类型都内置了多个方法用于操作自身。
  • Python中内置函数的调用。

基本数据类型 vs 高级数据类型:

可变性

基本数据类型(不可变):

  • 包括整数(int)、浮点数(float)、布尔值(bool)、字符串(str)、元组(tuple)等。
  • 一旦创建,对象的值不能被修改。
  • 操作不会改变原始对象,而是创建新的对象。
>>> x = 5  # 整数是不可变的
>>> y = x  # 创建了一个新的变量 y,但是 x 和 y 都指向相同的对象
>>> y += 2  # 修改 y,但是 x 不受影响
>>> print(x, y) 
5 7

高级数据类型(可变):

  • 包括列表(list)、集合(set)、字典(dict)、自定义类实例等。
  • 对象的值可以在原地被修改。
  • 操作会影响原始对象。
>>> my_list = [1, 2, 3]  # 列表是可变的
>>> other_list = my_list  # 创建了一个新的变量 other_list,但是两者指向同一个列表对象
>>> other_list.append(4)  # 修改了原始列表
>>> print(my_list, other_list) 
[1, 2, 3, 4] [1, 2, 3, 4]

复制行为

基本数据类型:

  • 复制基本数据类型时,实际上是创建了一个新的对象,原始对象保持不变。
>>> x = 10
>>> y = x  # 创建了一个新的变量 y,但是 x 和 y 都指向相同的对象
>>> y += 5
>>> print(x, y)  
10 15

高级数据类型:

  • 复制可变对象时,创建了一个新的变量,但是两者仍然指向相同的对象。
>>> my_list = [1, 2, 3]
>>> other_list = my_list  # 创建了一个新的变量 other_list,但是两者指向同一个列表对象
>>> other_list.append(4)
>>> print(my_list, other_list)  
[1, 2, 3, 4] [1, 2, 3, 4]

性能和内存占用

  • 基本数据类型通常更轻量,因为它们是不可变的,不需要考虑变化的可能性。
  • 高级数据类型需要更多的内存和处理资源,特别是在进行频繁的修改、添加或删除元素时。

使用场景

  • 基本数据类型适用于简单的数据表示和数值计算,以及需要保持数据不变性的情况。
  • 高级数据类型适用于需要灵活性、可变性和复杂数据结构的情况,如列表、集合、字典等。

选择基本数据类型还是高级数据类型取决于问题的要求,对性能和内存的需求,以及数据的特性。在实际编程中,这两者通常都有其独特的用途和优势。