1
Je souhaite créer un tableau multidimensionnel et l'initialiser avec des copies d'un objet mutable . Voilà ce que j'ai jusqu'à présent:Meilleure façon d'initialiser un tableau multidimensionnel avec un objet mutable
import copy
def create_array(dimensions):
dimensions = copy.deepcopy(dimensions)
dimensions.reverse()
a = [0] * dimensions[0]
del dimensions[0]
for d in dimensions:
a = [copy.deepcopy(a) for _ in range(d)]
return a
def create_array_mutable(dimensions, obj):
a = create_array(dimensions)
def set(x):
if isinstance(x[0], list):
for e in x:
set(e)
else:
for i in range(len(x)):
x[i] = copy.deepcopy(obj)
set(a)
return a
Je me demande s'il y a une meilleure façon de le faire (sans les copies et la récursion)?
Si vous pouvez utiliser numpy alors la première réponse ici semble être proche de ce que vous cherchez - http://stackoverflow.com/questions/4877624/numpy-array-of-objects (bien que cela appelle le constructeur plutôt que de copier ...) –