2017-12-03 2 views
0

Ich könnte diese Verwendung so implementieren [a[i:i+3], for i in range()]. Aber ich fand, wenn a groß ist, kostet es zu viele CPU-Ressourcen, wie könnte ich diesen Engpass lösen?Python Konvertieren Liste [0, 1, 2, 3, 4, 5] zu [0, 1, 2], [1,2,3], [2,3,4]

+0

was genau wird Ihre Liste sein? Nur ganze Zahl oder Kombination von String? Für eine optimale Hilfe geben Sie bitte an, welche Listenelemente möglich sind. – Gahan

+0

Ich habe zwei Arten von Listen. Ganzzahlen und Liste der Floats. –

+0

Sie können den Kontext des größeren Problems, das Sie mit diesen Listen lösen möchten, sichern und beschreiben. Vielleicht können wir einen Vorschlag machen, der es nicht erfordert, diese große Datenstruktur aufzubauen. –

Antwort

4

Wenn Ihre Liste die Größe n hat, haben Sie O (n) solche Listen zu komponieren - es gibt keinen Weg um sie herum.

Eine Sache, die Sie tun können, ist es jedoch träge zu berechnen, auf diese Weise wird die nächste Liste nur berechnet, wenn Sie versuchen, darauf zuzugreifen. Die Verwendung eines Generators für dieses Beispiel ist ziemlich einfach:

def compose_lists(lst): 
    for i in range(len(lst)-2): 
     yield lst[i:i+3] 
+0

Hättest du nicht einfach '[...]' '' '(...)' 'ändern können, um den Code von der Frage in einen Generator umzuwandeln, anstatt ihn komplett neu zu schreiben? –

+0

Genau das vermisse ich! –

Verwandte Themen