MST

星途 面试题库

面试题:Python遍历嵌套列表并进行复杂计算的高效策略

给定一个嵌套列表,例如[[1, 2, 3], [4, 5, 6], [7, 8, 9]],需要遍历这个嵌套列表,计算每个子列表中元素的平方和,并且如果这个平方和大于20,则将其结果翻倍。请使用高效的Python遍历策略实现,并说明你选择这种方式的原因以及如何优化性能。
36.4万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
result = []
for sublist in nested_list:
    square_sum = sum(num ** 2 for num in sublist)
    if square_sum > 20:
        square_sum *= 2
    result.append(square_sum)
print(result)

选择这种方式的原因

  1. 使用生成器表达式 num ** 2 for num in sublist 计算平方和,它在迭代时逐一生成值,而不是一次性创建整个平方数列表,节省内存。
  2. 外层使用普通的 for 循环遍历嵌套列表,代码简洁易懂,符合Python的常规编程习惯。

性能优化

  1. 如果嵌套列表非常大,可以考虑使用多线程或多进程来并行计算每个子列表的平方和,利用多核CPU的优势。例如使用 multiprocessing 模块:
import multiprocessing

def calculate_square_sum(sublist):
    square_sum = sum(num ** 2 for num in sublist)
    if square_sum > 20:
        square_sum *= 2
    return square_sum

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
with multiprocessing.Pool() as pool:
    result = pool.map(calculate_square_sum, nested_list)
print(result)
  1. 避免不必要的中间数据结构创建,如上述代码尽量使用生成器表达式而非列表推导式来减少内存占用。