Python 可变数据类型

2024 年 8 月 29 日 | 阅读 6 分钟

Python因其简单性而成为程序员中流行的编程语言。还应该注意的是,Python 将一切都视为对象。然而,许多种类的 Python 对象彼此之间差异很大。那就是,某些 Python 对象可以更改,而其他对象则不能。对于初学者 Python 开发者来说,这种区别非常令人困惑。因此,在这篇文章中,我们将澄清这种误解。在本教程中,我们将了解什么是可变 Python 数据类型。

本质上,可变 Python 数据类型是可以我们在初始化后修改的数据类型。

在看到这个评论后,你的大脑可能会产生两个额外的问题:什么是“原地”?此外,“值可以更改”是什么意思?

我们逐个讨论它们。

什么是“原地”?

任何不创建新副本即可修改原始内容的 Python 操作都称为原地 Python 操作。例如,Python 允许我们在不首先创建新列表的情况下添加、删除或更改列表的元素。

可变数据类型能够更改哪些类型的值?

可变数据类型允许我们更改数据类型的当前值(例如集合、字典、列表等)。或者,我们可以更改原始数据类型中已有的值,并删除或添加新值。本质上,我们不需要创建原始数据类型的新副本即可对其数据执行任何操作。因此,任何可变变量的值都可以被修改。

Python 可变数据类型示例

Python 有 3 种可变数据类型

  • 列表
  • 字典
  • Set

Python 中的列表

在 Python 中,列表对象是我们可以更改的元素的有序序列。我们可以通过为现有列表分配一个新元素来更新 Python 中的列表元素。为了执行这些活动,我们不需要创建列表的独立(或新)副本。以下是一些相同的示例。

示例 1

代码

输出

List after appending a new value:  [1, 2, 3, 4, 5, 6, 7]
Modified list after extending the list:  [1, 2, 3, 4, 5, 6, 7, 8, 10, 20]
Modified list after removing a value:  [1, 2, 3, 5, 6, 7, 8, 10, 20]

示例 2

代码

输出

New list after changing a value using indexing:  [2, 4, 6, 8, 30, 12]

Python 中的集合

在 Python 中,集合是包含无序项集合的对象。集合中不能有重复项,因为每个元素都是唯一的。此外,由于其固有的不变性,我们不能修改集合的任何组件。

在 Python 中,集合本身是可修改的。这意味着我们可以将条目添加到 Python 集合中或从中删除。因此,我们可以对集合执行可以更改整个集合的操作。

以下是关于 Python 集合可变性的几个重要细节

  • 由于集合是无序的,我们无法对集合使用索引。
  • 我们无法使用索引和切片来检索(访问)或修改集合的元素。集合数据结构本身不支持这些操作。

但是,我们可以更改、添加或删除集合中的任何项。在 Python 中,可以使用 add() 函数来添加元素。我们还可以使用 update() 方法来更新它。要从集合中删除项,请使用 Python 的 remove() 函数。

让我们看一些例子来阐明我们上面的观点。

代码

输出

Modified set after adding an element:  {1, 2, 3, 6, 7, 8, 10}
Modified set after adding multiple elements:  {1, 2, 3, 6, 7, 8, 10, 11, 17, 20, 22}
Modified set after removing an element:  {1, 2, 6, 7, 8, 10, 11, 17, 20, 22}

Python 中的字典

Python 的字典是无序元素集合。字典中的项每个都有一个键/值对,允许我们访问特定的键或值。字典键的性质是唯一的。

Python 中的字典是可变数据结构。这意味着我们可以使用赋值运算符来更新、删除或向字典中的现有元素添加值。

通过访问字典的键可以添加元素。如果键已存在,此方法只会更改值。在 Python 中,您可以通过调用 pop()、popitem()、clear() 或 del() 来轻松删除字典中的元素。

让我们看一些例子来更好地理解我们之前介绍的内容。

代码

输出

Modified dictionary after the addition of a new key:  {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
Modified dictionary after updating the value of a key:  {1: 'a', 2: 'b', 3: 'u', 4: 'd'}
Modified dictionary after removing a key-value pair:  {1: 'a', 2: 'b', 4: 'd'}
The dictionary after removing all the key-value pairs:  {}