python中的可变与不可变数据类型(随手记)

一、内置数据类型

在 Python 中,数据类型可以分为不可变(immutable)和可变(mutable)两类。这个区别非常重要,因为它影响了数据如何在程序中被处理和修改。

不可变类型(Immutable)

不可变类型创建后其内容不能被改变。这包括:

  1. 整数(Integers)
  2. 浮点数(Floats)
  3. 复数(Complex Numbers)
  4. 布尔值(Booleans)
  5. 字符串(Strings)
  6. 元组(Tuples)
  7. 冻结集合(Frozensets)

当这些类型的对象被创建后,它们所存储的值就不能被修改。任何对它们的修改实际上都会创建一个新的对象。

可变类型(Mutable)

可变类型的对象创建后其内容可以被改变。这包括:

  1. 列表(Lists)
  2. 字典(Dictionaries)
  3. 集合(Sets)
  4. 字节数组(Byte Arrays)

这些类型的对象可以在它们被创建后修改,比如添加、删除或更改其内部的元素。

理解哪些数据类型是可变的,哪些是不可变的,对于编写有效和可预测的 Python 代码非常重要。不可变类型有助于确保数据的一致性和程序的可靠性,而可变类型则提供了更大的灵活性和动态性。

二、扩展包数据类型

在 Python 中,除了内置的可变和不可变类型,还有许多常用的扩展包提供了自己的数据类型,这些类型可以是可变的或不可变的。以下是一些常见的扩展包和它们提供的数据类型:

  1. NumPy

    • 可变类型:numpy.ndarray 是 NumPy 的核心数组类型,它是可变的。你可以更改数组中的元素、调整数组形状等。
    • 不可变类型:NumPy 没有专门的不可变数组类型,但数组的某些操作(如 reshape)会返回原数组的视图而不是一个完全独立的副本。
  2. Pandas

    • 可变类型:DataFrameSeries 是 Pandas 中的两个主要数据类型,它们都是可变的。可以更改其中的数据、添加或删除列(对于 DataFrame)、添加或删除行等。
  3. Collections(Python 标准库的一部分):

    • 可变类型:collections.deque, collections.defaultdict, collections.Counter 等。
    • 不可变类型:collections.namedtuple 创建的是不可变对象。
  4. Immutable.js(在 Python JavaScript 环境中使用):

    • 不可变类型:这个库提供了多种不可变数据结构,如 List, Stack, Map 等。
  5. 其他第三方库

    • 根据具体库的设计,可能会提供自定义的可变或不可变类型。例如,图形处理库可能会有自定义的可变图形对象类型,科学计算库可能会有特殊的数组或矩阵类型。

这些第三方库扩展了 Python 的数据类型系统,为不同的应用领域提供了专门的工具和结构。在使用这些库时,了解它们提供的数据类型及其可变性特点是非常重要的,这有助于更高效和安全地处理数据。

你可能感兴趣的:(python,开发语言)