1 定义
列表 (List) 是用于存储有序元素集合的数据类型,可以包含不同类型的元素。可以使用方括号 [] 或 list() 函数创建列表。
代码:
# 创建列表
list1 = [1, 2, 3, "hello", 3.14]
list2 = list((4, 5, 6)) # 使用元组创建列表
print(f"列表1: {list1}, 列表2: {list2}")
结果:
2 索引和切片
列表中的元素可以通过索引访问,也可以通过切片获取子列表。
代码:
# 索引和切片
print(f"列表1的第一个元素: {list1[0]}, 列表1的最后一个元素: {list1[-1]}, 列表1的切片: {list1[1:4]}")
结果:
3 添加元素
append():在列表末尾添加一个元素。
insert():在指定位置插入一个元素。
extend():将另一个列表中的元素添加到当前列表末尾。
代码:
# 添加元素
list1.append("world")
list1.insert(2, "python")
list1.extend([7, 8, 9])
print(f"添加元素后的列表1: {list1}")
结果:
4 删除元素
remove():删除列表中第一个匹配的元素。
pop():删除并返回指定位置的元素,默认删除最后一个元素。
del:删除列表中指定位置的元素或切片
代码:
# 删除元素
list1.remove("hello") # 删除第一个 "hello"
print(f"remove删除元素后的列表1: {list1}")
popped_element = list1.pop(1) # 删除索引为1的元素
print(f"pop删除元素后的列表1: {list1}, 被删除的元素: {popped_element}")
del list1[0] # 删除索引为0的元素
del list1[2:4] # 删除索引2和3的元素
print(f"del删除元素后的列表1: {list1}")
结果:
5 修改元素
可以通过索引直接修改列表中的元素。
代码:
# 修改元素
list1[0] = "new value"
print(f"修改元素后的列表1: {list1}")
结果:
6 排序
sort():对列表进行原地排序 (修改原始列表)。
sorted():返回排序后的新列表(不修改原始列表)。
代码:
# 排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort() # 原地排序,修改numbers
print(f"原地排序后的numbers: {numbers}")
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_numbers = sorted(numbers) # 返回排序后的新列表,不修改numbers
print(f"排序后的新列表: {sorted_numbers}, 原列表numbers: {numbers}")
结果:
7 常用方法
len():获取列表长度
count():统计某个元素在列表中出现的次数。
index():查找某个元素在列表中第一次出现的位置。
代码:
# print(f"numbers列表长度:{numbers.len()}")
print(f"1 在 numbers 中出现的次数: {numbers.count(1)}")
print(f"9 在 sorted_numbers 中出现的索引: {sorted_numbers.index(9)}")
结果:
6 列表推导式
一种简洁的创建列表的方式,可以根据已有的列表或其他可迭代对象生成新的列表。
代码:
# 列表推导式
squares = [x**2 for x in range(10)] # 生成0-9的平方列表
print(f"0-9的平方列表: {squares}")
even_numbers = [x for x in range(20) if x % 2 == 0] # 生成0-19的偶数列表
print(f"0-19的偶数列表: {even_numbers}")
结果:
①嵌套列表推导式
代码:
# 嵌套列表推导式
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row] # 将二维列表展开成一维列表
print(f"扁平化矩阵: {flattened}")
结果:
②将一个字符串列表转换为整数列表
代码:
# 将一个字符串列表转换为整数列表
string_numbers = ["1", "2", "3", "4", "5"]
int_numbers = [int(x) for x in string_numbers]
print(f"字符串列表转换为整数列表: {int_numbers}")
结果:
8 案例
①对列表中的元素进行筛选或转换
代码:
#对列表中的元素进行筛选或转换
def filter_and_transform(numbers):
"""
筛选大于5的偶数,并计算它们的平方.
Args:
numbers: 待筛选的数字列表.
Returns:
筛选和转换后的数字列表.
"""
return [x**2 for x in numbers if x > 5 and x % 2 == 0]
numbers = [2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
print(f"筛选大于5的偶数,并计算它们的平方: {filter_and_transform(numbers)}")
结果:
②实现一个简单的栈或队列
代码:
class Stack:
"""
简单的栈实现.
"""
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
else:
return None
def peek(self):
if not self.is_empty():
return self.items[-1]
else:
return None
def is_empty(self):
return len(self.items) == 0
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(f"栈顶元素: {stack.peek()}")
print(f"出栈: {stack.pop()}")
print(f"出栈: {stack.pop()}")
print(f"栈是否为空: {stack.is_empty()}")
结果:
③列表去重
代码:
def remove_duplicates(numbers):
"""
使用集合进行列表去重.
Args:
numbers: 待去重的列表.
Returns:
去重后的列表.
"""
return list(set(numbers))
numbers = [1, 2, 2, 3, 4, 4, 5]
print(f"列表去重: {remove_duplicates(numbers)}")
结果:
④找出列表中出现次数最多的元素
代码:
def most_frequent(numbers):
"""
找出列表中出现次数最多的元素.
Args:
numbers: 待查找的列表.
Returns:
出现次数最多的元素.
"""
counts = {}
for x in numbers:
counts[x] = counts.get(x, 0) + 1 # 使用 get() 方法处理不存在的键
max_count = 0
most_frequent_element = None
for x, count in counts.items():
if count > max_count:
max_count = count
most_frequent_element = x
return most_frequent_element
numbers = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
print(f"列表中出现次数最多的元素: {most_frequent(numbers)}")
结果:
9 应用场景
- 存储数据集合
- 实现数据结构 (栈、队列等)
- 数据分析
- Web 开发 (例如存储用户列表)
- 游戏开发 (例如存储游戏角色的属性)