Python 列表推导式(List Comprehension)是一种简洁高效创建列表的方法,通过单行代码实现元素的转换和过滤。以下是核心要点和示例:
1. 基本语法new_list = [expression for item in iterable if condition]- expression:对元素的操作(如计算、函数调用等)。
- iterable:可迭代对象(如列表、字符串、范围等)。
- condition(可选):过滤条件,仅当满足时保留元素。
2. 常见用法示例示例 1:生成平方数列表squares = [x2 for x in range(10)]# 输出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]示例 2:过滤偶数evens = [x for x in range(20) if x % 2 == 0]# 输出:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]示例 3:字符串处理words = ["hello", "world"]upper_words = [word.upper() for word in words]# 输出:['HELLO', 'WORLD']示例 4:嵌套循环pairs = [(x, y) for x in range(3) for y in range(3)]# 输出:[(0, 0), (0, 1), (0, 2), (1, 0), ..., (2, 2)]示例 5:带条件的推导式result = [x if x % 2 == 0 else -x for x in range(10)]# 输出:[0, -1, 2, -3, 4, -5, 6, -7, 8, -9]3. 优势- 简洁性:用单行替代多行循环。
- 可读性:接近自然语言描述。
- 性能:通常比等效的循环更快(因内部优化)。
4. 注意事项- 避免复杂逻辑:若推导式过长(如多层嵌套),建议改用普通循环以提高可读性。
- 内存消耗:直接生成完整列表,大数据量时考虑生成器表达式((x for x in iterable))。
5. 进阶技巧- 字典推导式:dict_comp = {x: x2 for x in range(5)}# 输出:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
- 集合推导式:set_comp = {x % 3 for x in range(10)}# 输出:{0, 1, 2}
通过列表推导式,Python 能够以优雅的方式处理数据转换和过滤,是提升代码效率的利器。