下面是我的代码,需要很长时间才能执行。如何在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)

最佳答案

没有样本数据很难说这是否正确,但是从理论上讲应该可以:

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
            ]

关于python - 使用嵌套列表理解提高执行速度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59076224/

10-12 20:24