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() # 原地排序,修改numbersprint(f"原地排序后的numbers: {numbers}")numbers = [3, 1, 4, 1, 5, 9, 2, 6]sorted_numbers = sorted(numbers) # 返回排序后的新列表,不修改numbersprint(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) == 0stack = 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_elementnumbers = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]print(f"列表中出现次数最多的元素: {most_frequent(numbers)}")
结果:
9 应用场景