商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > python数据类型:字符串、列表、字典和集合的区别与用法

python数据类型:字符串、列表、字典和集合的区别与用法

 admin 发布于2026-09-04 阅读(0)

扫一扫,手机访问

“python数据类型”最容易学成一张定义表:字符串是文本,列表能放多个值,字典保存键值对。真正写代码时,出错往往不是因为没背定义,而是不知道该选哪一种,或者忽略了对象能不能被修改。

下面用访问方式、可变性和典型场景把常用内置类型放在一起比较。示例只演示语言行为,未连接外部业务数据,复制到本地 Python 环境即可自行验证。

先看一张类型地图

Python 数据类型全览:数字、字符串、列表、元组、字典、集合与类型转换

图:常用 Python 内置数据类型和可变性、转换关系的总览。

先记住一个判断顺序:数据是单个值还是一组值?需要按位置还是按键访问?创建后是否还要修改内容?这三个问题通常比死记类名更快。

字符串:文本值,不要当成字符数组修改

字符串是不可变序列,可以按下标读取,但不能直接改某个位置:

name = "python"
print(name[0])       # p
print(name.upper())  # PYTHON,返回新字符串

# name[0] = "P"  # TypeError:字符串不能原地修改
name = "P" + name[1:]

需要频繁拼接大量片段时,使用列表收集后再 "".join(parts),比循环里反复创建字符串更容易控制意图。

列表和元组:按位置访问,区别在于是否可变

列表适合“顺序明确、后续会增删”的数据;元组适合表示固定记录:

tasks = ["设计", "开发"]
tasks.append("测试")
tasks[0] = "方案设计"

point = (120, 80)
# point[0] = 0  # TypeError:元组不可变

不可变不等于“完全不能包含可变对象”。例如元组里放一个列表,列表自身仍可修改;因此把元组当作字典键时,还要确保其中所有成员都是可哈希的。

字典:按键访问,适合描述对象属性

如果数据有明确的字段名,字典通常比多个并行列表更清楚:

user = {"id": 7, "name": "Lin", "active": True}
if user.get("active", False):
    print(user["name"])

user["role"] = "editor"

user["name"] 在键缺失时会抛出 KeyError,适合“缺失就是错误”的场景;get 适合可选字段。不要为了避免异常把所有访问都改成 get,否则数据问题可能被默认值掩盖。

集合:去重和成员判断

集合没有重复元素,适合去重和判断成员是否存在:

tags = {"python", "sql", "python"}
print(tags)  # {'python', 'sql'},顺序不应作为业务依据

if "python" in tags:
    print("已包含 Python 标签")

需要保留输入顺序时,不要直接用集合替代列表。可以用 dict.fromkeys(values) 在现代 Python 中完成稳定去重,再根据需求转换回列表。

用一个问题快速选型

Python 数据类型选型指南:根据是否修改内容选择可变或不可变类型

图:从“要不要修改内容”出发,快速选择列表、字典、集合、元组或字符串。

需求优先考虑原因
一段文本str不可变,接口清晰
有序且会增删list按位置访问,修改方便
固定的多项记录tuple不希望被意外改动
字段名到字段值dict按键访问,表达属性关系
去重或成员判断set不保存重复项,查成员直接

常见误区和边界

  • listdictset 是可变对象,作为函数默认参数时不要直接写空列表或空字典。
  • == 比较值是否相等,is 判断是否为同一个对象;业务判断通常使用 ==
  • 集合和字典的遍历顺序不应被当成跨版本、跨实现的业务协议。
  • 类型转换可能失败,例如 int("12.5") 会抛出 ValueError,外部输入要显式处理。

小结

学习 python数据类型时,先问“怎么访问”和“要不要修改”,再决定用什么容器。字符串和元组强调稳定,列表、字典和集合强调操作便利;把这些差异落到输入校验和函数边界里,代码会比单纯背定义更可靠。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

产品推荐

热门关注