面试题答案
一键面试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)
选择这种方式的原因:
- 使用生成器表达式
num ** 2 for num in sublist
计算平方和,它在迭代时逐一生成值,而不是一次性创建整个平方数列表,节省内存。 - 外层使用普通的
for
循环遍历嵌套列表,代码简洁易懂,符合Python的常规编程习惯。
性能优化:
- 如果嵌套列表非常大,可以考虑使用多线程或多进程来并行计算每个子列表的平方和,利用多核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)
- 避免不必要的中间数据结构创建,如上述代码尽量使用生成器表达式而非列表推导式来减少内存占用。