有什么方法可以加快此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)
答案 0 :(得分:0)
itertools
模块具有函数product
,该函数返回笛卡尔乘积生成器。使用此功能,您的代码可以从使用四个for
循环重构为使用一个循环。
from itertools import product
for Q, t, x1, l in product(tqdm(Query), Top, X, Limit):
...