Python-Liste - "reservieren" - Raum ( ~ Größenänderung)

Ich bin eine Liste l und ich möchte Belegung:

l[index] = val

Aber es könnte ein Fall, wenn die Liste ist zu klein.

So, ich will dafür sorgen, dass ich Platz für den neuen Wert ein.
Manchmal brauche ich zum füllen der neue Platz mit leeren Saiten '', und manchmal auch mit anderen Objekten (wie leere Listen [], False oder None).

Für diese Aufgabe verwende ich folgende Prozedur:

def ResizeList(l, size, fill_with=None):
    l += [fill_with]*(size-len(l))

(Hinweis: es funktioniert auch, wenn size-len(l)<=0)
(Hinweis: ich bin daran interessiert, reservieren von Speicherplatz, ich absichtlich NICHT abgeschnitten es zu einer kürzeren Liste)

So:

ResizeList(l, index+1)
l[index] = val

(Bei Befüllung mit anderen Objekt, es ist wie : ResizeList(l, index+1, []) )

Gibt es mehr pythonic weisen, dies zu tun? Gibt es built-ins oder die Bibliothek, die Funktionen für, dies zu tun?

Ich bin vor allem mit Python-3.x, aber know-how über die Python-2x ist hilfreich und willkommen.

Klarstellung: Bitte, Sag mir nicht, über dict , Ursache ich brauche list

Für diejenigen, die möchte mich, um genauer zu sein:

Das problem Erklärung heißt es, es geht um list geben. Mit dict hier ist nicht eine option oder eine Lösung. Gibt es Gründe, insbesondere im Zusammenhang mit der domain (ich arbeite gerade an einem Prototyp für ein experiment, das zeigen einige asymptotische Verhalten, nicht - wie wahrscheinlich Sie es gewohnt sind - ein Prototyp-Programm. Wenn es wäre "nur ein Prototyp-Programm", dann Stimme ich mit ein dict und die anderen Kommentare). Ich habe die folgenden Annahmen:

  • Ich habe viele, viele Listen (kümmern müssen Speicher-und performance-overhead)
  • durch workflow und die Notwendigkeit der Prototyp, ich kann nicht rufen Sie ein handcodiert C/C++ - Erweiterung
  • während der Berechnung der endgültigen Liste Größe ist unbekannt
  • wir wissen, dass in die und die Listen werden dichten
  • Liste sind die Zellen geschrieben und überschrieben in einer unbekannten Reihenfolge

Diese sind nur ein paar der Gründe, warum ich betonte, dass ich noch eine list und nicht ein dict.
Für diejenigen, die an mehr details interessiert oder wer würde gerne diskutieren über dict, Kasse, wie wir diskutieren in den Kommentaren HIER

InformationsquelleAutor der Frage Grzegorz Wierzowiecki | 2012-01-13

Schreibe einen Kommentar