【问题标题】:Improving execution speed using nested list comprehension使用嵌套列表理解提高执行速度
【发布时间】:2020-03-23 08:45:50
【问题描述】:

下面是我的代码,它需要很长时间才能执行。如何在 Python 的列表推导中实现它以提高速度和效率?

buildings=[]
for bi in range(1449):
    for si in range (16):
        for m in range(3):
            a= train[(train['building_id']==bi)&(train['site_id']==si)&(train['meter']==m)]
            if not a.empty:

                buildings.append(a.values)

【问题讨论】:

  • 分享您的示例数据。
  • 列表理解只是循环的语法糖。它们的优势之一是可读性,而不是速度。 1449*16*3 仍然是 69552,即使您在等效理解中隐藏了嵌套循环。

标签: python list for-loop list-comprehension nested-lists


【解决方案1】:

如果没有您的样本数据,很难判断这是否正确,但这在理论上应该可行:

buildings = [
             x for x in
                 [
                 train[(train['building_id']==bi)&(train['site_id']==si)&(train['meter']==m)].values
                 for bi in range(1449)
                 for si in range(16)
                 for m in range(3)
                 ]
            if not x.empty
            ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2019-06-17
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2021-07-13
    相关资源
    最近更新 更多