lst = ["a", "b", "c"]# 方式1:遍历元素for item in lst: print(item)# 方式2:带索引遍历for i, item in enumerate(lst): print(i, item)# 方式3:按索引遍历for i in range(len(lst)): print(lst[i])
6.6 列表推导式
Python 特色
列表推导式是 Python 中非常优雅的语法,用一行代码生成列表。
基本格式
[表达式 for 变量 in 可迭代对象]
[表达式 for 变量 in 可迭代对象 if 条件]
示例
# 生成1-10的平方squares = [x**2 for x in range(1, 11)]# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]# 带条件:只保留偶数的平方evens_square = [x**2 for x in range(10) if x % 2 == 0]# [0, 4, 16, 36, 64]# 多个循环pairs = [(x, y) for x in [1,2] for y in [3,4]]# [(1, 3), (1, 4), (2, 3), (2, 4)]# 字符串处理words = ["hello", "world", "python"]lengths = [len(w) for w in words] # [5, 5, 6]upper_words = [w.upper() for w in words] # ['HELLO', 'WORLD', 'PYTHON']
什么时候用列表推导式?
需要对序列做转换/筛选时
代码更简洁、更 Pythonic
性能比 for 循环 + append 略好
6.7 嵌套列表(二维列表)
# 3行3列的矩阵matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]]# 取元素matrix[0][0] # 1(第一行第一列)matrix[1][2] # 6(第二行第三列)# 遍历二维列表for row in matrix: for item in row: print(item)# 列表推导式生成二维列表matrix = [[i*j for j in range(1,4)] for i in range(1,4)]
# ❌ 错误:会漏掉元素lst = [1, 2, 3, 4, 5]for x in lst: if x % 2 == 0: lst.remove(x)print(lst) # [1, 3, 5]?不对,实际是 [1, 3, 5]... 等等# ✅ 正确1:倒序遍历for x in reversed(lst): ...# ✅ 正确2:列表推导式生成新列表lst = [x for x in lst if x % 2 != 0]