【Python】字典(dict)、列表(list)、元组(tuple)

在 Python 中,{}、[]、() 是三种核心的字面量语法,分别对应字典(dict) 、列表(list) 、元组(tuple) 三种内置对象(特殊场景下 {} 也可表示集合 set),以下是详细说明:

一、[]:列表(list)------ 可变有序序列

核心特性:

  • 可变(Mutable):可动态增删改元素;
  • 有序(Ordered):元素按插入顺序排列,支持索引/切片;
  • 异构:可存储不同类型的元素(数字、字符串、对象等)。

基础用法:

python 复制代码
# 空列表
empty_list = []
# 非空列表
fruits = ["apple", "banana", 100, True]

# 可变特性(修改元素)
fruits[1] = "orange"  # 结果:["apple", "orange", 100, True]
# 新增元素
fruits.append("grape")
# 删除元素
del fruits[2]

二、():元组(tuple)------ 不可变有序序列

核心特性:

  • 不可变(Immutable):一旦创建,元素不能增删改(元素本身若为可变对象,其内部可修改);
  • 有序(Ordered):支持索引/切片,性能略优于列表;
  • 异构:同样支持多类型元素;
  • 语法细节:单元素元组需加逗号((1,)),空元组直接 ()。

基础用法:

python 复制代码
# 空元组
empty_tuple = ()
# 单元素元组(必须加逗号)
single_tuple = (10,)
# 多元素元组(括号可省略,靠逗号识别)
colors = ("red", "green", "blue")
nums = 1, 2, 3  # 等价于 (1,2,3)

# 不可变特性(报错)
# colors[0] = "black"  # TypeError: 'tuple' object does not support item assignment

# 元素为可变对象时,内部可修改
t = ([1,2], 3)
t[0].append(4)  # 结果:([1,2,4], 3)

三、{}:字典(dict)/ 集合(set)------ 两种场景

场景1:字典(dict)------ 可变键值对映射(默认)

核心特性:

  • 可变(Mutable):可增删改键值对;
  • 无序(Python 3.7+ 按插入顺序保存);
  • 键(key)唯一且不可变(必须是哈希类型:字符串、数字、元组等),值(value)可任意;
  • 空字典直接用 {} 表示。

基础用法:

python 复制代码
# 空字典
empty_dict = {}
# 非空字典
person = {"name": "Alice", "age": 25, "is_student": False}

# 修改值
person["age"] = 26
# 新增键值对
person["city"] = "Beijing"
# 删除键值对
del person["is_student"]
场景2:集合(set)------ 可变无序不重复集合

核心特性:

  • 可变(Mutable):可增删元素;
  • 无序(Unordered):不支持索引;
  • 元素唯一(自动去重)且不可变(哈希类型);
  • 空集合必须用 set()(而非 {},{} 优先表示空字典)。

基础用法:

python 复制代码
# 空集合(必须用 set())
empty_set = set()
# 非空集合
nums = {1, 2, 3, 3, 4}  # 自动去重:{1,2,3,4}

# 新增元素
nums.add(5)
# 删除元素
nums.remove(2)

核心总结表

符号 主要对象 核心特性 空值写法
[] 列表 可变、有序、异构 []
() 元组 不可变、有序、异构 ()
{} 字典 可变、键值对、键唯一不可变 {}
{} 集合 可变、无序、元素唯一不可变 set()(非 {})

关键注意点

  1. {} 优先表示空字典,空集合必须用 set();
  2. 元组的"不可变"是指元素引用不可变,若元素是列表/字典等可变对象,其内部可修改;
  3. 集合/字典的键要求是"哈希类型"(不可变类型),列表、字典等不可哈希的类型不能作为集合元素/字典键。
相关推荐
Hhy_110720 分钟前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
starzy199026 分钟前
深入理解Scala函数定义:从方法到函数的类型跨越
开发语言·scala
starzy199032 分钟前
深入理解Scala递归函数:从栈溢出到尾调用优化
开发语言·scala
三*一41 分钟前
Mapbox‑GL JS 多边形折点编辑工具:实现原理、功能拆解与踩坑总结
开发语言·javascript·ecmascript
青少儿编程课堂1 小时前
蓝桥杯青少组图形化省考报名倒计时·全国青少年信息素养大赛·电子学会图形化考级:校园黑白棋人机对战解析
c++·python·算法·bfs·信息学竞赛
YSL0701241 小时前
C++基础
开发语言·c++
若亦_1 小时前
Java中关于this的三种用法
java·开发语言·intellij-idea
tellmewhoisi1 小时前
nlp:知识库检索和dify知识库创建
python·自然语言处理
2601_968793141 小时前
Python Requests 轻量自动化:无需浏览器,实现真人级账号浏览模拟
开发语言·python·自动化
eggwyw2 小时前
关于C++为什么不加入垃圾回收机制解析
开发语言·c++