Supposons que je veuille créer un tableau vide 3x4 2d comme ceci.
x = [[0.0]*3]*4
Cependant, en utilisant le code ci-dessus,
print x[0] is x[1] # Output = True
C'est-à-dire,
x[1][1] = 5.0
print x # Output = [[0.0, 5.0, 0.0],
# [0.0, 5.0, 0.0],
# [0.0, 5.0, 0.0],
# [0.0, 5.0, 0.0]]
Pour éviter de créer cette liste avec 4 références identiques à la même liste, j'ai fait des choses comme :
y = [[0.0]*3, [0.0]*3, [0.0]*3, [0.0]*3]
Où
print y[0] is y[1] # Output = False
y[1][1] = 5.0
print y # Output = [[0.0, 0.0, 0.0],
# [0.0, 5.0, 0.0],
# [0.0, 0.0, 0.0],
# [0.0, 0.0, 0.0]]
Une autre approche consisterait à utiliser la compréhension des listes.
z = [[0.0]*3 for x in range(4)]
mais, ça semble toujours un peu laid.
Existe-t-il un moyen de rendre le tableau 'y' ou 'z' où toutes les références sont uniques dans un format élégant comme dans 'x' en utilisant multiplier sur une liste ?