Python自动化办公应用学习笔记22—元组与列表区别

一、核心定义

元组是"不可变的列表":
一旦创建,内容无法修改(不能增/删/改元素)。适合存储固定数据(如配置项、常量)。

# 创建后无法修改

config = ("admin", "P@ssw0rd", 8080)

config[0] = "user" # 报错:'tuple' object does not support item assignment

二、元组 vs 列表 核心区别

特性

元组(tuple)

列表(list)

办公自动化场景选择

可变性

不可变

可变

配置项用元组,动态数据用列表

内存占用

更小(约少16%)

更大

处理大文件时优先考虑元组

操作速度

访问更快

修改操作较慢

高频读取数据用元组

适用场景

固定数据/配置/常量

动态数据集合


语法

(1, 2) 或 1, 2

[1, 2]


能否做字典键

可以

不可以

坐标点等复合键必须用元组

# 内存对比实测(办公自动化重点)

import sys

data_list = [1, 2, 3, 4, 5]

data_tuple = (1, 2, 3, 4, 5)

print(f"列表占用内存: {sys.getsizeof(data_list)} 字节") # 120 字节

print(f"元组占用内存: {sys.getsizeof(data_tuple)} 字节") # 80 字节


三、适用场景(办公自动化重点)

固定配置项

# 文件类型白名单

ALLOWED_FILES = ('.xlsx', '.docx', '.pdf')


if filename.endswith(ALLOWED_FILES):

process_file(filename) # 安全处理文件


函数多返回值

def analyze_excel(file):

row_count = 1024

col_count = 8

has_errors = False

return row_count, col_count, has_errors # 自动打包为元组


# 接收返回值

rows, cols, errors = analyze_excel("销售报表.xlsx")


多变量同步赋值

# 批量赋值

name, dept, salary = ("张三", "财务部", 8500)


# 交换变量(无临时变量)

a, b = 10, 20

a, b = b, a # a=20, b=10


字典复合键


# 存储部门-月份数据

sales_data = {

("销售部", "2023-01"): 150_000,

("技术部", "2023-01"): 80_000

}

print(sales_data[("销售部", "2023-01")]) # 150000

四、办公自动化实战案例

场景:批量处理月度报告


# 元组存储固定报表模板路径

REPORT_TEMPLATES = (

r"D:\月度报告\销售模板.xlsx",

r"D:\月度报告\库存模板.xlsx",

r"D:\月度报告\财务模板.xlsx"

)


# 元组存储月份

MONTHS = ("2023-01", "2023-02", "2023-03")


for month in MONTHS:

for template in REPORT_TEMPLATES:

# 生成当月报告路径

report_path = template.replace("模板", month)

generate_report(template, report_path) # 生成报告函数

print(f"已生成报告: {report_path}")


五、高级技巧:命名元组


from collections import namedtuple


# 定义员工结构(比类更轻量)

Employee = namedtuple("Employee", ["name", "dept", "extension"])


# 创建员工记录

staff = [

Employee("张三", "行政部", 8001),

Employee("李四", "IT部", 8002)

]


# 清晰访问属性

for person in staff:

print(f"{person.name} 分机号: {person.extension}")

# 比 person[0] 更易读

原文链接:,转发请注明来源!