[] 定义() 定义| 特性 | 列表(List) | 元组(Tuple) |
|---|---|---|
| 可变性 | ✅ 可变 | ❌ 不可变 |
| 语法 | 方括号 [] | 圆括号 () |
| 性能 | 较慢 | 较快 |
| 内存占用 | 较多 | 较少 |
| 使用场景 | 需要修改的数据 | 固定数据、字典键 |
| 内置方法 | 较多 | 较少 |
python# 列表创建
list1 = [1, 2, 3, 4, 5]
list2 = list([1, 2, 3]) # 使用list()构造函数
# 元组创建
tuple1 = (1, 2, 3, 4, 5)
tuple2 = 1, 2, 3 # 可以省略括号
tuple3 = tuple([1, 2, 3]) # 使用tuple()构造函数
tuple4 = (1,) # 单个元素的元组需要逗号
python# 列表 - 可变
my_list = [1, 2, 3, 4]
print("原始列表:", my_list)
my_list[0] = 10 # ✅ 修改元素
my_list.append(5) # ✅ 添加元素
my_list.remove(2) # ✅ 删除元素
print("修改后列表:", my_list)
# 元组 - 不可变
my_tuple = (1, 2, 3, 4)
print("原始元组:", my_tuple)
# my_tuple[0] = 10 # ❌ 报错: 'tuple' object does not support item assignment
# my_tuple.append(5) # ❌ 报错: 'tuple' object has no attribute 'append'
python# 共同支持的操作(都不会修改原对象)
my_list = [1, 2, 3, 4, 5]
my_tuple = (1, 2, 3, 4, 5)
print("索引访问:")
print("列表[0]:", my_list[0]) # 1
print("元组[0]:", my_tuple[0]) # 1
print("\n切片操作:")
print("列表[1:3]:", my_list[1:3]) # [2, 3]
print("元组[1:3]:", my_tuple[1:3]) # (2, 3)
print("\n长度:")
print("列表长度:", len(my_list)) # 5
print("元组长度:", len(my_tuple)) # 5
print("\n包含检查:")
print("3在列表中:", 3 in my_list) # True
print("3在元组中:", 3 in my_tuple) # True
python# 列表的修改方法
my_list = [1, 2, 3]
# 添加元素
my_list.append(4) # [1, 2, 3, 4]
my_list.insert(1, 1.5) # [1, 1.5, 2, 3, 4]
my_list.extend([5, 6]) # [1, 1.5, 2, 3, 4, 5, 6]
# 删除元素
my_list.remove(1.5) # [1, 2, 3, 4, 5, 6]
popped = my_list.pop() # 删除最后一个元素,返回6
popped2 = my_list.pop(0) # 删除第一个元素,返回1
del my_list[1] # 删除索引为1的元素
# 其他修改方法
my_list.clear() # 清空列表 []
my_list = [3, 1, 4, 1, 5, 9]
my_list.sort() # 排序 [1, 1, 3, 4, 5, 9]
my_list.reverse() # 反转 [9, 5, 4, 3, 1, 1]
pythonimport time
import sys
# 创建大量数据
size = 1000000
# 列表性能测试
start_time = time.time()
list_data = [i for i in range(size)]
list_time = time.time() - start_time
# 元组性能测试
start_time = time.time()
tuple_data = tuple(i for i in range(size))
tuple_time = time.time() - start_time
print(f"创建时间 - 列表: {list_time:.4f}秒, 元组: {tuple_time:.4f}秒")
print(f"内存占用 - 列表: {sys.getsizeof(list_data)}字节, 元组: {sys.getsizeof(tuple_data)}字节")
python# 1. 需要频繁修改的数据
shopping_cart = ['apple', 'banana', 'milk']
shopping_cart.append('bread')
shopping_cart.remove('banana')
# 2. 数据收集和处理
scores = []
scores.append(85)
scores.append(92)
scores.sort()
# 3. 需要多种方法操作的序列
data = [1, 5, 2, 8, 3]
data.sort()
data.reverse()
python# 1. 固定数据(如配置信息)
DATABASE_CONFIG = ('localhost', 3306, 'my_db', 'user', 'password')
# 2. 字典的键(必须是不可变类型)
color_codes = {
(255, 0, 0): '红色',
(0, 255, 0): '绿色',
(0, 0, 255): '蓝色'
}
# 3. 函数返回多个值
def get_user_info(user_id):
# 返回不可变的数据组
return ('Alice', 25, 'alice@example.com')
name, age, email = get_user_info(1)
# 4. 保证数据安全
constants = (3.14159, 2.71828, 9.8) # 不会被意外修改
python# 相互转换
my_list = [1, 2, 3]
my_tuple = tuple(my_list) # 列表转元组 (1, 2, 3)
my_tuple = (4, 5, 6)
my_list = list(my_tuple) # 元组转列表 [4, 5, 6]
# 嵌套结构
# 列表中包含元组
mixed_list = [(1, 'a'), (2, 'b'), (3, 'c')]
# 元组中包含列表
mixed_tuple = ([1, 2, 3], [4, 5, 6], [7, 8, 9])
# 注意:元组中的列表仍然可以修改!
mixed_tuple[0].append(4) # ✅ 可以,因为修改的是列表而不是元组
python# 学生成绩管理系统 - 使用列表存储可变数据
students_scores = [
['Alice', [85, 92, 78]],
['Bob', [76, 88, 95]],
['Charlie', [90, 85, 92]]
]
# 添加新学生
students_scores.append(['David', [82, 79, 88]])
# 修改成绩
students_scores[0][1].append(95)
# 系统配置 - 使用元组存储固定配置
APP_CONFIG = (
'1.0.0', # 版本号
'production', # 环境
True, # 调试模式
('127.0.0.1', 8000) # 服务器地址和端口
)
# 函数返回多个值 - 使用元组
def calculate_statistics(numbers):
total = sum(numbers)
count = len(numbers)
average = total / count
maximum = max(numbers)
minimum = min(numbers)
return total, count, average, maximum, minimum
# 解包元组返回值
total, count, avg, max_val, min_val = calculate_statistics([1, 2, 3, 4, 5])


本文作者:李佳玮
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!