你应该知道的6种Python容器数据类型

2025年1月5日 | 阅读 5 分钟

Python因其简洁性和多功能性而闻名,使其成为初学者和经验丰富的开发者的首选。Python多功能性的关键特性之一是其广泛的内置数据类型。其中,容器数据类型在高效管理数据集合方面起着至关重要的作用。在本文中,我们将探讨您应该了解的六种重要的Python容器数据类型:列表(lists)、元组(tuples)、集合(sets)、字典(dictionaries)、双端队列(deque)和命名元组(namedtuple)。理解这些容器将提高您在Python中有效组织、访问和操作数据的能力。

1. 列表

列表是Python中最常用的容器数据类型之一。它们是可变的、有序的项集合,允许您存储元素序列,包括不同的数据类型,如整数、字符串,甚至其他列表。

创建和访问列表

您可以通过将元素放在方括号中来创建列表

使用索引可以轻松地访问列表中的元素

输出

 
apple   
 

输出

 
cherry   

修改列表

列表是可变的,这意味着您可以在创建后修改它们的元素

输出

 
 ['apple', 'blueberry', 'cherry']   

您还可以使用append()、insert()、remove()和pop()等方法添加和删除元素

输出

 
['apple', 'blueberry', 'cherry', 'date']   
 

输出

 
['apple', 'cherry', 'date']   
 

输出

 
 date   
 

输出

 
['apple', 'cherry']   

列表推导式

列表推导式提供了一种简洁的创建列表的方法

输出

 
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]   

2. 元组

元组与列表类似,但它们是不可变的,意味着创建后无法更改其元素。它们对于表示固定项集合很有用。

创建和访问元组

元组是通过将元素放在圆括号中创建的

访问元组中的元素与访问列表类似

输出

 
 10.0   

不可变性

尝试修改元组会导致错误

coordinates[0] = 15.0 TypeError: 'tuple' object does not support item assignment

元组解包

元组支持一种称为解包的特性,允许您一次将值分配给多个变量

输出

 
 10.0  
 

输出

 
20.0   

3. 集合

集合是无序的唯一元素集合。它们对于存储没有重复的项以及执行并集、交集和差集等集合操作很有用。

创建集合

您可以通过将元素放在大括号中或使用set()函数来创建集合

Set 操作

集合支持各种操作,例如添加和删除元素

输出

 
{'apple', 'banana', 'cherry', 'date'}   
 

输出

 
 {'apple', 'cherry', 'date'}   

Set 方法

集合提供了用于常见集合操作的方法

4. 字典

字典是键值对的可变、无序集合。它们对于基于键的快速查找、添加和删除非常高效。

创建和访问字典

字典是通过将键值对放在大括号中创建的,键和值之间用冒号分隔

使用键来访问值

输出

 
John   

修改字典

可以通过添加、更新或删除键值对来修改字典

输出

 
{'name': 'John', 'age': 26, 'major': 'Computer Science'}   
 

输出

 
 {'name': 'John', 'age': 26, 'major': 'Computer Science', 'GPA': 3.8}   
 

输出

 
{'name': 'John', 'age': 26, 'GPA': 3.8}   

字典方法

字典提供了用于处理键值对的各种方法

输出

 
 dict_keys(['name', 'age', 'GPA'])   
 

输出

 
 dict_values(['John', 26, 3.8])   
 

输出

 
dict_items([('name', 'John'), ('age', 26), ('GPA', 3.8)])   

5. 双端队列 (Deque)

Deque(发音为“deck”)代表双端队列。它是collections模块的一部分,并提供了一种在队列的两端高效地添加和删除元素的方法。

创建和使用Deque

要使用deque,您需要从collections模块导入它

添加和删除元素

您可以使用append()、appendleft()、pop()和popleft()将元素添加到deque的任一端

输出

 
deque(['apple', 'banana', 'cherry', 'date'])   
 

输出

 
 deque(['fig', 'apple', 'banana', 'cherry', 'date'])   
 

输出

 
 deque(['fig', 'apple', 'banana', 'cherry'])   
 

输出

 
deque(['apple', 'banana', 'cherry'])   

旋转Deque

Deque提供rotate()方法来旋转元素

输出

 
deque(['cherry', 'apple', 'banana'])   
 

输出

 
deque(['apple', 'banana', 'cherry'])   

6. 命名元组 (NamedTuple)

NamedTuple是用于创建具有命名字段的元组子类的工厂函数。它是collections模块的一部分,并用于创建没有方法的简单类。

创建NamedTuple

要使用namedtuple,请从collections模块导入它并定义字段

创建和访问NamedTuple实例

创建命名元组的实例,并通过点表示法访问其字段

输出

 
10   
 

输出

 
 20   

不可变性

NamedTuples与普通元组一样是不可变的

p.x = 15 AttributeError: can't set attribute

有用的方法

NamedTuples附带了一些有用的方法,例如_asdict()将其转换为字典

输出

 
{'x': 10, 'y': 20}   

结论

理解Python的容器数据类型对于高效的数据管理和操作至关重要。列表和字典对于各种应用都非常有用,而元组则提供了创建不可变集合的可靠方式。集合非常适合存储唯一元素和执行集合操作,而deque则提供了处理双端队列的高效方法。NamedTuple是创建具有命名字段的简单、不可变类的强大工具。掌握这些容器数据类型将显著提高您的Python编程技能,使您能够编写更高效、更易读的代码。