如何加速forloop或使用其他方法?

2024-09-27 22:44:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以用什么方法加速这个for循环或使用其他方法?我想做一些地图或列表的理解

Query = [5,7,9,10,12,13,14,16]
Top = range(1,30)
X = range(5,17)
Limit = range(1,20)


Results = []

#Test1 is a function
for Q in tqdm(Query):
    for t in Top:
        for x1 in X:
            for l in Limit:
                df1 = Test1(df = pred2,Results = QBResults,Query = Q ,Top = t, X = x1, Limit = l)
                df2 = Test1(df = TestDF,Results = QBResults,Query = Q ,Top = t, X = x1, Limit = l)
                df1['Query'] = Q
                df1['Top'] = t
                df1['X'] = x1
                df1['Limit'] = l
                df1['Df1AggScore'] = df1['AggScore']
                df1['Df2AggScore'] = df2['AggScore']
                df1['Df1TopScore'] = df1['TopScore']
                df1['Df2TopScore'] = df2['TopScore']
                df1['Diff'] = np.abs(df1['Df1AggScore'] - df1['Df2AggScore'])
                df1['Diff'] = np.abs(df1['Df1TopScore'] - df1['Df2TopScore'])
                Results.append(df1)
Opt = pd.concat(Results)
Opt.sort_values(by='Df2TopScore', ascending=False)

Tags: 方法indffortoprangequeryresults
1条回答
网友
1楼 · 发布于 2024-09-27 22:44:57

itertools模块有一个函数product,它返回笛卡尔积生成器。使用此函数,可以将代码从使用四个for循环重构为使用一个循环

from itertools import product
for Q, t, x1, l in product(tqdm(Query), Top, X, Limit):
    ...

相关问题 更多 >

    热门问题