Python 核心数据结构操作指南:列表、字典、字符串与元组
一、可变序列:列表 (List)
列表是 Python 中最常用的有序集合类型,使用方括号 [] 定义。元素之间用逗号分隔,支持异构数据类型。列表具有索引特性,正向索引从 0 开始,负向索引从 -1 开始表示末尾元素。
1. 增删改查与扩展
# 初始化一个人员数据列表
employees = ["Alice", "Bob", "Charlie"]
# 【修改】直接通过下标赋值,若下标超出范围则报错
employees[1] = "Bobby"
# 【插入】insert(索引,对象)
employees.insert(0, "David")
# 【追加】append(对象),添加到列表末尾
employees.append("Eve")
# 【删除】del 语句可删除指定下标或整个变量
del employees[0]
# pop(索引) 默认移除最后一个元素并返回
removed_name = employees.pop()
# remove(值) 移除第一个匹配到的特定值
if "Charlie" in employees:
employees.remove("Charlie")
2. 统计与定位
# count(值) 计算指定元素出现的次数
print(employees.count("Alice"))
# index(值) 返回首次出现位置的下标,不存在则抛出异常
try:
idx = employees.index("Frank")
except ValueError:
print("目标元素未找到")
3. 排序与翻转
注意:sort() 方法直接在原列表上进行操作并返回 None,不适合链式调用。
numbers = [3, 1, 4, 1, 5]
# 原地升序排序
numbers.sort()
# 翻转顺序
numbers.reverse()
print(numbers)
4. 合并与复制机制
# extend() 将另一个列表的元素批量添加进当前列表
base_list = ["X", "Y"]
extra_list = ["A", "B"]
base_list.extend(extra_list)
# 浅拷贝 (Shallow Copy)
# 仅复制第一层对象,嵌套的对象仍共享内存地址
main_data = ["Item1", ["SubItem1", "SubItem2"]]
copy_v1 = main_data.copy()
# 修改主列表的顶层元素,拷贝不受影响
main_data[0] = "ModifiedTop"
# 修改主列表中的嵌套列表,拷贝也会同步变化
main_data[1][0] = "ChangedSubItem"
print(f"Main: {main_data}")
print(f"Copy: {copy_v1}") # SubItem1 也会变
# 深拷贝 (Deep Copy)
# import copy
# safe_copy = copy.deepcopy(main_data)
# 无论修改哪一层,源数据与拷贝数据互不干扰
二、不可变序列:字符串 (String)
字符串是不可变的数据类型,一旦创建不能更改其内容,任何操作都会生成新字符串。
1. 格式化处理
raw_text = "hello world"
# title() 首字母大写
capitalized = raw_text.title()
print(capitalized) # Hello World
# replace() 替换特定子串
replaced = raw_text.replace("hello", "Hi")
2. 验证与辅助功能
# 判断是否为纯数字
is_num = "12345".isdigit()
# 判断是否符合标识符命名规范 (如变量名)
valid_id = "my_var_1".isidentifier()
invalid_id = "my-var-1".isidentifier()
# 填充居中
text = "Core"
padded = text.center(10, "*")
print(padded) # ***Core****
三、哈希映射:字典 (Dictionary)
字典用于存储键值对 (Key-Value),键必须是唯一的且不可变(通常是字符串或元组),字典本身是无序的(在 Python 3.7+ 中按插入顺序保持)。
1. 基本操作
user_db = {
"ID001": "Admin",
"ID002": "Guest"
}
# 设置或更新 (若 Key 存在则覆盖,不存在则新增)
user_db["ID003"] = "User"
# 安全获取值,不存在时返回 None 或指定默认值
val = user_db.get("ID001", "DefaultUser")
# 检查 Key 是否存在
has_key = "ID001" in user_db
2. 遍历与销毁
# 通过 pop 删除指定键并返回对应值
removed = user_db.pop("ID002")
# 循环迭代
for k, v in user_db.items():
print(f"Key: {k}, Value: {v}")
# 获取所有键或值的视图
all_keys = list(user_db.keys())
all_values = list(user_db.values())
3. 嵌套结构
字典可以嵌套包含列表或其他字典,实现复杂数据结构。
address_book = {
"Beijing": {"District1": ["StreetA", "StreetB"]},
"Shanghai": {"District1": ["RoadX", "RoadY"]}
}
# 直接链式访问修改嵌套数据
address_book["Beijing"]["District1"][0] = "NewStreet"
四、不可变序列:元组 (Tuple)
元组使用圆括号 () 定义,类似列表但内容不可修改。常用于确保数据安全或不希望被意外更改的上下文。
coordinates = (10, 20)
# coordinates[0] = 15 # 此行会抛出 TypeError
五、性能优化与编译机制
Python 作为解释型语言,在运行代码前通常由解释器将其转换为字节码。.pyc 文件即为编译后的缓存版本,存放于 __pycache__ 目录中。再次运行相同脚本时,如果源码未变更,解释器可直接加载 .pyc 以提升执行效率。开发者可利用此机制优化启动速度,但在动态热更新场景下需注意清除旧缓存。