列表理解

问题描述 投票:0回答:1

我正在开发一个项目,涉及使用 Python 中的嵌套列表理解来处理大型数据集。我编写的代码达到了预期的结果,但我担心随着数据集大小的增加其性能。我正在寻找有关如何优化代码以提高效率的建议

result = [
    [func1(item) for item in sublist1 if condition1(item)]
    for sublist1 in dataset1
    if condition2(sublist1)
    for sublist2 in dataset2
    if condition3(sublist2)
]
python list-comprehension
1个回答
0
投票

我认为这里没有关于如何在不了解实际上下文的情况下优化此代码的明确答案。

但是,我看到一些事情或可能对你有帮助。

  • 列表理解为您提供内存中的完整列表。如果您的列表有许多元素和/或大元素,这可能会很昂贵。如果您只需要将结果列表逐个元素用于其他用途,您可以考虑使用
    generator expression
    。这是通过将方括号 (
    []
    ) 替换为圆括号 (
    ()
    ) 来实现的。现在,完整列表将不会存储在内存中,并且仅在循环遍历时逐个元素进行计算。
  • 在嵌套
    for loops
    之间使用的 if 语句已经可以很好地尽快排除循环。
  • 你的第一行理解是另一个理解,这肯定会对你的表现产生很大的影响。但是,您提到该代码完全符合您需要的功能。

一般来说,如果您需要加快代码速度,可以考虑使用分析器(例如

pyinstrument
)来确定代码的哪一部分实际上花费了最长的时间。

© www.soinside.com 2019 - 2024. All rights reserved.