我有问题。我有一个高度递归的函数,随着数据集变得越来越大,这将需要数年时间才能执行。你有一个想法,如何优化它,让它可以在几分钟内运行吗?
DatenListeE124_DurchschnittMandate = {}
for Daten in DatenListeE124:
if Daten[0] not in DatenListeE124_DurchschnittMandate.keys():
DatenListeE124_DurchschnittMandate[Daten[0]] = []
DatenListeE124_DurchschnittMandate[Daten[0]].append(Daten)
DatenListeE124_DurchschnittMandateTabelle = []
# Durschnitt bilden aus der neuen Tabelle
Jahre = list(range(datetime.datetime.now().year-(FormularHochladen.Jahre.data-1), datetime.datetime.now().year+1))
for Schluessel in DatenListeE124_DurchschnittMandate.keys():
for Daten in DatenListeE124_DurchschnittMandate[Schluessel]:
for Daten2 in DatenListeE124_DurchschnittMandate[Schluessel]:
for Daten3 in DatenListeE124_DurchschnittMandate[Schluessel]:
if Daten[3] == Daten2[3] == Daten3[3] and Daten[2] == Daten2[2] + 1 == Daten3[2] + 2 and Daten[2] in Jahre:
DatenListeE124_DurchschnittMandateTabelle.append([Daten[0], Daten[1], f"{Daten[2]}, {Daten2[2]}, {Daten3[2]}", Daten[3], round((Daten[4]+Daten2[4]+Daten3[4])/3, 2), round((Daten[5]+Daten2[5]+Daten3[5])/3, 2), round((Daten[6]+Daten2[6]+Daten3[6])/3, 2), round((Daten[7]+Daten2[7]+Daten3[7])/3, 2), round((Daten[8]+Daten2[8]+Daten3[8])/3, 2)])
列表的演示内容:
Jahre = [2019, 2020, 2021]
DatenListeE124_DurchschnittMandate = {10021: [[10021, 'Max, Mustermann', 2012, 35, 694.9, 523.9, 171.0, 3.0, 174.63], [10021, 'Max, Mustermann', 2013, 35, 794.1, 627.86, 166.24, 3.0, 209.29]], 10025: [[10025, 'Max Mustermann 2', 2013, 98, 5.8, 5.8, 0, 0, -1]], 10026: [[10026, 'Max Mustermann 3', 2012, 24, 300.9, 300.9, 0, 0, -1], [10026, 'Max Mustermann 3', 2012, 35, 999, 695, 304, 4, 173.75]], 10027: [[10027, 'Max Mustermann 4', 2014, 35, 574.95, 291.95, 283, 5.08, 57.43]]}
DatenListeE124 = [[10021, 'Max, Mustermann 1', 2012, 35, 694.9, 523.9, 171.0, 3.0, 174.63], [10021, 'Max, Mustermann 1', 2013, 35, 794.1, 627.86, 166.24, 3.0, 209.29], [10025, 'Max, Mustermann 2', 2013, 98, 5.8, 5.8, 0, 0, -1], [10026, 'Max, Mustermann 3', 2012, 24, 300.9, 300.9, 0, 0, -1], [10026, 'Max, Mustermann 3', 2012, 35, 999, 695, 304, 4, 173.75], [10027, 'Max, Mustermann 4', 2014, 35, 574.95, 291.95, 283, 5.08, 57.43], [10030, 'Max, Mustermann 5', 2015, 33, 670, 98.6, 571.4, 12.02, 8.21], [10032, 'Max, Mustermann 6', 2018, 21, 180, 148.5, 31.5, 0.5, 297.0]]
也许更节省内存?
谢谢你的帮助!