Die derzeit akzeptierte Antwort von varunl
>>> l = [None] * 10
>>> l
[None, None, None, None, None, None, None, None, None, None]
Funktioniert gut für Nichtreferenztypen wie Zahlen. Wenn Sie eine Liste mit Listen erstellen möchten, treten leider Referenzierungsfehler auf. Beispiel in Python 2.7.6:
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append(0)
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
Wie Sie sehen können, zeigt jedes Element auf dasselbe Listenobjekt. Um dies zu umgehen, können Sie eine Methode erstellen, mit der jede Position mit einer anderen Objektreferenz initialisiert wird.
def init_list_of_objects(size):
list_of_objects = list()
for i in range(0,size):
list_of_objects.append( list() ) #different object reference each time
return list_of_objects
>>> a = init_list_of_objects(10)
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append(0)
>>> a
[[0], [], [], [], [], [], [], [], [], []]
>>>
Es gibt wahrscheinlich eine standardmäßige, integrierte Python-Methode (anstatt eine Funktion zu schreiben), aber ich bin mir nicht sicher, was es ist. Würde mich freuen, korrigiert zu werden!
Edit: Es ist [ [] for _ in range(10)]
Beispiel:
>>> [ [random.random() for _ in range(2) ] for _ in range(5)]
>>> [[0.7528051908943816, 0.4325669600055032], [0.510983236521753, 0.7789949902294716], [0.09475179523690558, 0.30216475640534635], [0.3996890132468158, 0.6374322093017013], [0.3374204010027543, 0.4514925173253973]]