Lige nu bruger jeg en liste, og jeg forventede noget i stil med:
verts = list (1000)
Skal jeg bruge array i stedet?
Du bør overveje at bruge en dict
-type i stedet for en præ-initialiseret liste. Omkostningerne ved at slå op i en ordbog er små og kan sammenlignes med omkostningerne ved at få adgang til et vilkårligt listeelement.
Og når du bruger en mapping, kan du skrive:
aDict = {}
aDict[100] = fetchElement()
putElement(fetchElement(), fetchPosition(), aDict)
Og funktionen putElement
kan gemme elementet på enhver given position. Og hvis du har brug for at kontrollere, om din samling indeholder et element ved et givet indeks, er det mere pythonisk at skrive:
if anIndex in aDict:
print "cool!"
end:
if not myList[anIndex] is None:
print "cool!"
Da sidstnævnte antager, at intet virkeligt element i din samling kan være None
. Og hvis det sker - så opfører din kode sig forkert.
Og hvis du desperat har brug for ydeevne, og det er derfor du forsøger at præ-initialisere dine variabler og skrive den hurtigst mulige kode - så skift sprog. Den hurtigste kode kan ikke skrives i Python. Du bør prøve C i stedet og implementere wrappers til at kalde din præ-initialiserede og prækompilerede kode fra Python.
Uden at vide mere om problemområdet er det svært at svare på dit spørgsmål. Medmindre du er sikker på, at du skal gøre noget mere, er den pythoniske måde at initialisere en liste på:
verts = []
Oplever du rent faktisk et ydelsesproblem? I så fald, hvad er ydelsesflaskehalsen? Lad være med at forsøge at løse et problem, som du ikke har. Det'er sandsynligt, at ydelsesomkostningerne ved dynamisk at fylde et array til 1000 elementer er fuldstændig irrelevant for det program, som du'reelt forsøger at skrive.
Array-klassen er nyttig, hvis tingene i din liste altid vil være af en bestemt primitiv type med fast længde (f.eks. char, int, float). Men den kræver heller ikke præ-initialisering.