# 直接迭代 for square in (x ** 2for x inrange(5)): print(square) # 输出: 0, 1, 4, 9, 16
5. 实际应用案例
5.1 数据转换
1 2 3 4 5 6 7 8 9
# 将字符串列表转换为整数列表 str_numbers = ["1", "2", "3", "4", "5"] int_numbers = [int(x) for x in str_numbers] print(int_numbers) # 输出: [1, 2, 3, 4, 5]
# 将列表中的元素转换为大写 words = ["hello", "world", "python"] upper_words = [word.upper() for word in words] print(upper_words) # 输出: ['HELLO', 'WORLD', 'PYTHON']
5.2 数据过滤
1 2 3 4 5 6 7 8 9
# 过滤出长度大于 3 的字符串 words = ["a", "ab", "abc", "abcd", "abcde"] long_words = [word for word in words iflen(word) > 3] print(long_words) # 输出: ['abcd', 'abcde']
# 过滤出包含特定字符的字符串 words = ["apple", "banana", "cherry", "date"] contains_a = [word for word in words if'a'in word] print(contains_a) # 输出: ['apple', 'banana', 'date']
5.3 组合数据
1 2 3 4 5 6 7 8 9 10 11
# 组合两个列表的元素 list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] combined = [(x, y) for x in list1 for y in list2] print(combined) # 输出: [(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]
# 笛卡尔积 colors = ["red", "green", "blue"] sizes = ["S", "M", "L"] combinations = [(color, size) for color in colors for size in sizes] print(combinations) # 输出: [('red', 'S'), ('red', 'M'), ('red', 'L'), ('green', 'S'), ...]
5.4 矩阵操作
1 2 3 4 5 6 7 8 9
# 转置矩阵 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] transposed = [[row[i] for row in matrix] for i inrange(len(matrix[0]))] print(transposed) # 输出: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
# 矩阵元素平方 matrix = [[1, 2], [3, 4]] squared = [[x ** 2for x in row] for row in matrix] print(squared) # 输出: [[1, 4], [9, 16]]
6. 性能对比
列表推导式相比传统的 for 循环,不仅代码更简洁,而且执行速度通常更快:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
import time
# 使用传统 for 循环 start = time.time() squares = [] for i inrange(1000000): squares.append(i ** 2) end = time.time() print(f"传统 for 循环耗时: {end - start:.6f} 秒")
# 使用列表推导式 start = time.time() squares = [i ** 2for i inrange(1000000)] end = time.time() print(f"列表推导式耗时: {end - start:.6f} 秒")