【Python学习】元组、列表、集合、字典的各种用法大全

🌈据说,看我文章时 关注、点赞、收藏帅哥美女们 心情都会不自觉的好起来。

前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:Python学习 ,一个很哇塞的专栏~

想看往期历史文章,可以浏览此博文: 历史文章目录,后续所有文章发布都会同步更新此博文~

人生苦短,我用python

1. Tuple (元组)

元组是不可变的数据结构,一旦创建就不能修改。

创建
t = (1, 2, 3)  # 创建一个元组
t_single = (1,)  # 单个元素的元组需要加逗号
访问
print(t[0])  # 访问第一个元素
print(t[-1])  # 访问最后一个元素
切片
print(t[1:3])  # 从第2个到第3个元素(不包括第4个元素)
元组方法
  • count(x):返回 x 在元组中出现的次数
  • index(x):返回 x 在元组中的索引位置(如果不存在会抛出异常)
t = (1, 2, 3, 1)
print(t.count(1))  # 2
print(t.index(2))  # 1
元组的优点
  • 性能:由于不可变,元组的创建和访问比列表稍微高效。
  • 用于作为字典的键:由于不可变性,元组可以作为字典的键。

2. List (列表)

列表是可变的、有序的集合,可以存储任意类型的元素。

创建
l = [1, 2, 3, 'a', True]
访问
print(l[1])  # 访问第二个元素
print(l[-1])  # 访问最后一个元素
切片
print(l[1:3])  # 获取第二到第三个元素
常见操作
  • append(x):在列表末尾添加元素
  • insert(i, x):在索引 i 位置插入元素 x
  • extend(iterable):扩展列表,将 iterable 中的所有元素添加到列表末尾
  • remove(x):删除第一个匹配的元素 x
  • pop(i):移除并返回索引 i 位置的元素(默认为最后一个元素)
  • index(x):返回元素 x 在列表中的索引
  • count(x):返回元素 x 在列表中出现的次数
  • sort():排序列表
  • reverse():反转列表
  • clear():清空列表
l = [1, 2, 3]
l.append(4)  # [1, 2, 3, 4]
l.insert(1, 10)  # [1, 10, 2, 3, 4]
l.remove(10)  # [1, 2, 3, 4]
l.pop(2)  # [1, 2, 4]
l.sort()  # [1, 2, 4]
列表的优点
  • 列表是最常用的数据结构,灵活且功能丰富。
  • 支持动态大小调整。

3. Set (集合)

集合是无序且不重复的元素集合。它主要用于去重和测试成员关系。

创建
s = {1, 2, 3, 4}
empty_set = set()  # 空集合
添加和删除元素
s.add(5)  # 添加元素
s.remove(3)  # 删除指定元素(如果元素不存在会抛出 KeyError)
s.discard(4)  # 删除指定元素,如果不存在不会抛错
集合常用操作
  • union():返回两个集合的并集
  • intersection():返回两个集合的交集
  • difference():返回集合的差集
  • issubset():判断一个集合是否为另一个集合的子集
  • issuperset():判断一个集合是否为另一个集合的超集
  • isdisjoint():判断两个集合是否没有交集
s1 = {1, 2, 3}
s2 = {3, 4, 5}

print(s1.union(s2))  # {1, 2, 3, 4, 5}
print(s1.intersection(s2))  # {3}
print(s1.difference(s2))  # {1, 2}
集合的优点
  • 集合中没有重复元素,适合去重。
  • 可以快速判断元素是否存在。

字典(dict)是 Python 中最常用的数据结构之一,它是一个无序的、可变的键值对集合。每个键(key)都映射到一个值(value)。字典的键必须是不可变类型(如字符串、整数、元组等),而值可以是任意类型。

4. Dictionary (字典)

字典是由键值对组成的集合,常用于存储需要通过键访问值的场景。

创建字典
d = {'name': 'Alice', 'age': 25, 'job': 'engineer'}
empty_dict = {}  # 空字典

你也可以通过 dict() 函数创建字典:

d = dict(name='Alice', age=25, job='engineer')
访问字典中的值
print(d['name'])  # 访问键 'name' 对应的值
print(d.get('age'))  # 使用 get() 方法访问键 'age' 对应的值

如果访问的键不存在,get() 返回 None,而直接使用 [] 会抛出 KeyError 异常。

print(d.get('address', 'Not Found'))  # 如果键不存在,返回默认值
修改字典中的值
d['age'] = 26  # 修改已有的键对应的值
d['address'] = 'New York'  # 添加新的键值对
删除字典中的元素
  • del 语句:删除指定键的键值对
  • pop(key):删除指定键的键值对并返回其值
  • popitem():删除并返回字典中的一对键值对(随机选择)
del d['job']  # 删除键 'job' 和它对应的值
print(d.pop('address'))  # 删除 'address' 并返回它的值
字典的方法
  • keys():返回字典中所有的键
  • values():返回字典中所有的值
  • items():返回字典中的所有键值对(作为元组的集合)
  • update():更新字典,添加新键值对或修改已有的键值对
  • clear():清空字典
print(d.keys())  # 返回字典中的所有键
print(d.values())  # 返回字典中的所有值
print(d.items())  # 返回字典中的所有键值对

d.update({'job': 'developer', 'city': 'Beijing'})  # 更新字典
print(d)

d.clear()  # 清空字典
字典的遍历

你可以遍历字典的键、值或键值对:

# 遍历字典的键
for key in d:
    print(key)

# 遍历字典的值
for value in d.values():
    print(value)

# 遍历字典的键值对
for key, value in d.items():
    print(f"{key}: {value}")
字典的优点
  • 字典是通过键值对存储数据的,因此可以根据键快速查找值,时间复杂度为 O(1)。
  • 字典中的键是唯一的,适用于需要快速查找、更新、删除的场景。
  • 对于需要快速访问大量数据并且能够通过唯一标识符(键)索引的数据集,字典是最优选择。
示例代码
# 创建字典
person = {'name': 'Bob', 'age': 30, 'job': 'teacher'}

# 访问字典
print(person['name'])  # 输出: Bob
print(person.get('age'))  # 输出: 30
print(person.get('salary', 'Not Available'))  # 输出: Not Available

# 修改字典
person['age'] = 31
person['address'] = 'London'

# 删除元素
del person['job']
removed_value = person.pop('address')

# 遍历字典
for key, value in person.items():
    print(f"{key}: {value}")

总结

  • Tuple (元组):不可变,用于保存不可修改的、有序的集合。
  • List (列表):可变,有序,适用于需要频繁修改数据的场景。
  • Set (集合):无序,不重复,适用于需要快速查找、去重、进行集合运算的场景。
  • Dict (集合):字典是一个无序的、可变的键值对集合,通过键快速查找对应的值,适用于需要高效映射和存储数据的场景。
<think>好的,用户想了解Python元组列表集合字典的区别与用法。首先我需要回忆这四种数据结构的基本特性,然后整理它们的区别和适用场景。 首先,元组列表都是有序的,但元组不可变,列表可变。集合是无序且不重复的,字典是键值对的集合。这些是基本概念。接下来需要详细说明各自的特点,比如定义方式、操作方法和使用场景。 可能需要从可变性、存储结构、性能等方面展开比较。比如,列表适合频繁增删元素的场景,而元组适合不可变的数据,集合用于去重和成员检测,字典用于快速查找键对应的值。 还要注意它们的语法区别,比如元组用圆括号,列表用方括号,集合字典用花括号,但字典的每个元素是键值对。另外,集合中的元素必须是不可变类型,而字典的键也必须是不可变的。 在用法上,可以举一些例子,比如列表的append、元组的不可修改、集合的add和remove,字典的get方法等。性能方面,比如集合的查找速度比列表快,因为基于哈希表。 用户可能还想知道什么时候选择哪种数据结构,所以需要给出具体的应用场景,比如配置信息用元组,动态数据用列表,去重用集合,键值存储用字典。 最后,生成相关问题时,可以围绕它们的区别、转换方法、性能比较、使用注意点等方面提问。确保问题覆盖用户可能感兴趣的扩展内容。</think>在Python中,元组列表集合字典是四种核心数据结构,其区别与用法如下: --- ### 一、基本特性对比 | 类型 | 可变性 | 有序性 | 元素唯一性 | 定义符号 | 典型场景 | |-------|--------|--------|------------|------------|--------------------| | 元组 | 不可变 | 有序 | 允许重复 | `()` | 存储固定配置、坐标 | | 列表 | 可变 | 有序 | 允许重复 | `[]` | 动态数据集合 | | 集合 | 可变 | 无序 | 禁止重复 | `{}`或`set()` | 去重、集合运算 | | 字典 | 可变 | 无序 | 键唯一 | `{key: value}` | 键值映射、快速查找 | --- ### 二、详细用法与示例 #### 1. **元组(Tuple)** - **定义**:`t = (1, "a", 3.14)` - **特点**: - 不可修改元素,但可整体重新赋值 - 支持索引和切片操作 - 常用于函数多返回值,如:`return x, y` - **操作限制**: ```python t[0] = 2 # 报错:TypeError,不可修改元素 ``` #### 2. **列表(List)** - **定义**:`lst = [1, 2, 3]` - **核心操作**: ```python lst.append(4) # 增 → [1,2,3,4] lst.pop(0) # 删 → [2,3,4] lst[1] = "b" # 改 → [2,"b",4] lst.extend([5,6]) # 合并 → [2,"b",4,5,6] ``` #### 3. **集合(Set)** - **定义**:`s = {1, 2, 3}` 或 `s = set([1,1,2])`(去重后为`{1,2}`) - **集合运算**: ```python a = {1,2}; b = {2,3} a | b # 并集 → {1,2,3} a & b # 交集 → {2} ``` #### 4. **字典(Dict)** - **定义**:`d = {"name": "Alice", "age": 25}` - **核心操作**: ```python d["gender"] = "F" # 增/改 del d["age"] # 删 d.get("name", "") # 安全获取,避免KeyError ``` --- ### 三、性能比较 | 操作 | 列表 | 集合 | 字典 | |---------------|-------|-------|-------| | 查找元素 | $O(n)$ | $O(1)$ | $O(1)$ | | 插入元素 | $O(1)$ | $O(1)$ | $O(1)$ | | 删除元素 | $O(n)$ | $O(1)$ | $O(1)$ | --- ### 四、使用场景 1. **元组**:保证数据不可变(如数据库查询结果) 2. **列表**:需要动态增删的数据序列(如日志记录) 3. **集合**:去重或数学集合运算(如用户标签过滤) 4. **字典**:键值关联查询(如缓存、配置管理) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值