应用场景1:数据过滤与转换
- 优势:生成器表达式在处理大量数据时,不需要一次性将所有数据加载到内存中,而是按需生成数据,节省内存空间。并且代码简洁,可读性高。
- 代码示例:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 生成器表达式过滤出偶数并平方
squared_evens = (num ** 2 for num in nums if num % 2 == 0)
for result in squared_evens:
print(result)
应用场景2:文件处理
- 优势:当处理大文件时,逐行处理数据,避免一次性读取整个文件导致内存溢出。可以高效地对文件内容进行实时处理。
- 代码示例:
# 假设test.txt文件内容为每行一个数字
with open('test.txt', 'r') as file:
# 生成器表达式计算文件中数字的总和
total = sum(int(line.strip()) for line in file if line.strip())
print(total)
应用场景3:迭代复杂数据结构
- 优势:对于嵌套的复杂数据结构,生成器表达式可以方便地进行扁平化处理,并且保持内存使用的高效性。
- 代码示例:
nested_list = [[1, 2], [3, 4], [5, 6]]
# 生成器表达式将嵌套列表扁平化
flattened = (num for sublist in nested_list for num in sublist)
for num in flattened:
print(num)