【python】列表/元组/字典/集合

本文深入解析Python中的列表、元组、字典和集合四种基本数据结构,详细讲解了每种数据结构的特点、操作方法及应用场景,是Python编程学习者不可多得的参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表/元组/字典/集合

列表

>>>classmates = ['A', 'B', 'C']

>>>len(classmates)
3

索引进行访问
>>>classmates[0]
'A'
>>>classmates[1]
'B'
>>>classmates[2]
'C'

倒数索引
>>>classmates[-1]
'C'
>>>classmates[-2]
'B'

添加元素
>>>classmates.append('D') 追加

>>>classmates.insert(1, 'E') 插入
 ['A', 'E', 'B', 'C', 'D']

删除元素
>>>classmates.pop() 从列表中删除最后一个元素并返回

>>>classmates.pop(1) 删除索引为1的元素

替换元素的值:直接给对应索引赋值

列表可切片
>>> a=[1,2,3,4]
>>> a[:3]
[1, 2, 3]
>>>

元组

元组和列表非常类似,但一经创建,无法修改

>>>classmates = ('A', 'B', 'C')
没有append,insert,pop等方法

只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:
>>> t = (1,)
>>> t
(1,)

同样可以索引取值和切片

字典

键值对存储数据

score = {'A':100, 'B':90, 'C':80}

判断key是否存在
>>>'A' in score
True
或者
>>>'A' in score.keys()
True

判断值是否存在
>>>'A' in score.values()
False

删除键值对数据
>>>score.pop('A')
100

集合

set和dict类似,也是一组key的集合,但不存储value。

由于key不能重复,所以在set中,没有重复的key。

要创建一个set,需要提供一个list作为输入集合:
>>> s = set([1, 2, 3,3, 4])
>>> s
{1, 2, 3, 4}
重复元素在set中自动被过滤

>>> s = set('apple')
>>> s
{'a', 'p', 'l', 'e'}

添加元素add(key)
可以使用 discard(key) 和 remove(key) 方法删除集合中特定的元素
如果集合中不存在指定的元素,使用discard()保持不变;
但在这种情况下,remove()会引发KeyError。

set可以看成数学意义上的无序和无重复元素的集合,
因此,两个set可以做数学意义上的交集、并集等操作:

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
>>> s1 - s2
{1}
>>> s1^s2
{1, 4}

不可变集合

可以使用函数 frozenset() 创建 frozenset。

>>> s = frozenset('Python')
>>> type(s)
<class 'frozenset'>

元组是不可变的列表,frozenset 是不可变的集合。

 

<think>好的,我现在需要帮助用户了解Python中的列表元组集合字典。首先,我应该回忆这些数据结构的基本概念和区别。用户可能想知道它们各自的定义、特点以及何时使用它们。根据提供的引用内容,我需要确保信息准确,并引用正确的来源。 首先,列表(List)应该是有序、可变的,支持重复元素。用户可能对如何创建和操作列表感兴趣,比如添加、删除元素。引用里提到列表用方括号,可以动态调整大小,所以应该强调这些点。 然后是元组(Tuple),它和列表类似但不可变。需要说明元组用圆括号,适用于不希望数据被修改的场景,比如作为字典的键。引用2和3都提到了元组的不可变性,需要强调这一点。 接下来是集合(Set),无序且元素唯一。用户可能不太清楚集合的应用场景,比如去重或集合运算。引用里提到集合用花括号,所以需要说明如何创建和使用集合的方法,如并集、交集等。 最后是字典(Dict),键值对结构,无序且键必须唯一。用户可能想知道如何访问、添加或修改键值对。引用3详细说明了字典的创建和操作函数,应该涵盖这些内容,比如使用get方法或直接通过键访问。 在比较部分,需要将四者的特性列出来,比如可变性、有序性、重复元素和表示符号。这样用户能一目了然地看到区别。应用场景部分应该结合各自的特点举例,比如列表用于数据收集,元组用于固定配置,集合用于去重,字典用于键值存储。 用户可能还会关心如何选择合适的数据结构,这部分需要结合引用1中的建议,根据需求选择高效的结构。例如,频繁修改用列表,需要唯一性用集合,快速查找用字典。 需要确保回答结构清晰,分点说明每个数据结构的特点、操作方法和示例代码。同时,检查LaTeX格式是否符合要求,行内公式用$...$,独立公式用$$...$$,但当前内容可能涉及较少数学公式,主要关注代码块和结构。 最后生成相关问题时要围绕用户可能进一步想了解的内容,比如性能对比、嵌套使用、转换方法等。确保问题覆盖用户可能深入的方向,帮助他们继续学习。 现在需要整合这些思考,按照用户的要求分章节回答,使用中文,语法正确,引用正确来源,并在末尾添加相关问题。</think>### Python列表元组集合字典详解 #### 一、列表(List) **特点** 1. **有序可变**:元素按插入顺序排列,支持增删改操作[^2]。 2. **允许重复**:同一元素可多次出现。 3. **灵活存储**:可包含不同类型的数据(如混合整数、字符串等)。 **使用方法** - **创建**:用方括号 `[]` 或 `list()` 函数。 ```python my_list = [1, "a", True] ``` - **操作** - 添加元素:`append()`、`insert()`、`extend()` - 删除元素:`pop()`、`remove()`、`del` - 切片访问:`my_list[0:2]` - 排序:`sort()` **示例** ```python fruits = ["apple", "banana"] fruits.append("orange") # ["apple", "banana", "orange"] fruits[1] = "grape" # ["apple", "grape", "orange"] ``` --- #### 二、元组(Tuple) **特点** 1. **有序不可变**:创建后元素不可修改[^2][^3]。 2. **轻量安全**:内存占用小,适合存储固定配置或常量。 3. **可哈希**:可作为字典的键。 **使用方法** - **创建**:用圆括号 `()` 或 `tuple()` 函数。 ```python my_tuple = (1, "a", True) ``` - **操作** - 索引访问:`my_tuple[0]` - 不可修改元素,但可嵌套可变对象(如列表)。 **示例** ```python config = ("localhost", 8080) # config[0] = "127.0.0.1" # 会报错 ``` --- #### 三、集合(Set) **特点** 1. **无序唯一**:元素不重复且无顺序。 2. **高效查询**:基于哈希表实现,`in` 操作时间复杂度为 $O(1)$。 3. **集合运算**:支持并集(`|`)、交集(`&`)等。 **使用方法** - **创建**:用花括号 `{}` 或 `set()` 函数(空集合必须用 `set()`)。 ```python my_set = {1, 2, 3} ``` - **操作** - 添加元素:`add()` - 删除元素:`remove()`、`discard()` - 去重:`set([1,1,2])` → `{1,2}` **示例** ```python a = {1, 2} b = {2, 3} print(a & b) # {2} ``` --- #### 四、字典(Dict) **特点** 1. **键值对存储**:键唯一且不可变(如字符串、数字、元组)[^3]。 2. **无序可变**:Python 3.7+ 中插入顺序保留。 3. **快速查找**:通过键直接访问值,时间复杂度 $O(1)$。 **使用方法** - **创建**:用花括号 `{}` 或 `dict()` 函数。 ```python my_dict = {"name": "Alice", "age": 30} ``` - **操作** - 添加/修改:`my_dict["gender"] = "female"` - 删除键值对:`del my_dict["age"]` - 获取键列表:`keys()` - 安全访问:`get("key", default_value)` **示例** ```python scores = {"math": 90, "english": 85} scores["physics"] = 95 # 添加新键值对 print(scores.get("chemistry", 0)) # 输出0(默认值) ``` --- #### 五、四者对比 | 特性 | 列表 | 元组 | 集合 | 字典 | |--------------|------------|------------|------------|------------| | **可变性** | 可变 | 不可变 | 可变 | 可变 | | **有序性** | 有序 | 有序 | 无序 | 无序(Python 3.7+ 有序) | | **重复元素** | 允许 | 允许 | 不允许 | 键不允许重复 | | **表示符号** | `[]` | `()` | `{}` | `{key: value}` | --- #### 六、应用场景 1. **列表**:数据收集(如日志记录)、需要频繁修改的场景。 2. **元组**:配置参数、函数返回多个值、字典键。 3. **集合**:去重、成员快速判断、集合运算。 4. **字典**:键值映射(如数据库记录)、JSON数据解析。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值