基本操作
# 列表创建
numbers = [1, 2, 3, 4, 5]
mixed = [1, "Python", 3.14, True]
empty = []
repeated = [0] * 5 # [0, 0, 0, 0, 0]
# 列表访问
first = numbers[0] # 获取第一个元素
last = numbers[-1] # 获取最后一个元素
sub_list = numbers[1:4] # 切片获取子列表 [2, 3, 4]
# 列表修改
numbers[0] = 10 # 修改单个元素
numbers[1:4] = [20, 30, 40] # 修改多个元素
numbers.append(6) # 添加元素到末尾
numbers.insert(0, 0) # 在指定位置插入元素
常用列表方法
# 添加和删除元素
fruits = ["苹果", "香蕉", "橙子"]
fruits.append("葡萄") # 添加到末尾
fruits.insert(1, "梨") # 在指定位置插入
fruits.extend(["草莓", "樱桃"]) # 扩展列表
removed = fruits.pop() # 删除并返回最后一个元素
fruits.pop(0) # 删除并返回指定位置的元素
fruits.remove("香蕉") # 删除第一个匹配的元素
# 查找和计数
index = fruits.index("橙子") # 查找元素位置
count = fruits.count("苹果") # 统计元素出现次数
# 排序和反转
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort() # 升序排序
numbers.sort(reverse=True) # 降序排序
numbers.reverse() # 反转列表
列表推导式
# 基本列表推导式
squares = [x**2 for x in range(10)] # 生成平方数列表
evens = [x for x in range(10) if x % 2 == 0] # 生成偶数列表
# 嵌套列表推导式
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [x for row in matrix for x in row] # 展平列表
# 条件列表推导式
numbers = [-4, -2, 0, 2, 4]
abs_values = [abs(x) for x in numbers] # 绝对值列表
pos_neg = ["正" if x > 0 else "负" if x < 0 else "零" for x in numbers]
# 字符处理示例
words = ["hello", "world", "python"]
upper_words = [word.upper() for word in words] # 转换为大写
lengths = [len(word) for word in words] # 计算长度
实用示例
# 列表去重
def remove_duplicates(lst):
return list(dict.fromkeys(lst))
# 列表分组
def group_by_length(words):
groups = {}
for word in words:
length = len(word)
if length not in groups:
groups[length] = []
groups[length].append(word)
return groups
# 列表过滤
def filter_positive(numbers):
return [num for num in numbers if num > 0]
# 列表交集和并集
def list_operations(list1, list2):
intersection = list(set(list1) & set(list2))
union = list(set(list1) | set(list2))
return intersection, union
# 移动零元素
def move_zeros(lst):
non_zeros = [x for x in lst if x != 0]
zeros = [0] * (len(lst) - len(non_zeros))
return non_zeros + zeros
注意事项
- 列表是可变对象,修改操作会直接改变原列表
- 列表切片会创建新的列表对象,注意内存使用
- 使用列表推导式时要注意可读性,过于复杂的逻辑建议使用普通循环
- 对大型列表进行频繁插入删除操作时,考虑使用collections.deque
- 列表的extend()方法比多次append()更高效