Ich habe eine Liste der DOY-Daten. Die Liste ist fast 900.000 Einträge lang. Das Problem, das ich habe, ist, dass die Daten zunächst bis zu 365 gehen, aber dann beginnt bei 1 wieder, wenn ich es möchte Vergangenheit 365. Zum Beispiel gehen:schnellste Möglichkeit, eine große Liste zu teilen
>>> continue_list([140, 141, 145, 270, 365, 365.90, 1, 2, 5, 360])
>>> [140, 141, 145, 270, 365, 365.90, 366, 367, 370, 725]
Hier ist mein Versuch:
def continue_list(x):
l = []
m = []
for i in x:
if math.floor(i) == 1:
l = l+ x[x.index(i):]
l = list(map(lambda x: x+365, l))
m = m + x[:x.index(i)]
new_x = m + l
return new_x
Dies funktioniert perfekt für kleine Listen. Aber für eine Liste mit 900.000 Einträgen ist es nicht machbar; Mein Computer stürzt sofort ab. Irgendwelche Tipps für einen schnelleren Ansatz?
Ich bin nicht klar, wo die "Split" kommt oder wie Sie Ihre erwartete Ausgabe erhalten; Was passiert, wenn Sie mehrere Jahreszyklen durchlaufen? Wie berechnen Sie die Gesamtzahl der Tage, die diesen Werten hinzugefügt werden? Und was passiert, wenn ein Jahr komplett verpasst wird? – roganjosh
Ist 365 ein konstanter Offset oder kann es sich ändern? Es ist nicht klar, aus Ihrem Beispiel und Code –