J'ai quelques problèmes avec le script suivant. Il devrait faire 3 copies de la liste suivante afin qu'elles puissent être modifiées indépendamment. Cependant, il semble créer 3 clones de la même liste, et quand vous en modifiez un, vous les modifiez tous. Voici la fonction:La liste clonée semble fonctionner comme un alias, même si explicitement déclaré comme un clone
def calculateProportions(strategies,proportions):
import itertools
combinations = []
columns = list(itertools.product(strategies,repeat=3))
for i in range(0,len(columns)):
columns[i] = list(columns[i])
for n in range(0,len(strategies)):
combinations.append(columns[:])
combinations[0][0][0] = "THIS SHOULD ONLY BE IN ONE PLACE"
print combinations
strategies = [[0,0],[0,50],[50,50]]
calculateProportions(strategies,[])
Remarquez comment, lorsque vous exécutez cela, vous voyez la chaîne "CELA DEVRAIT ÊTRE DANS UN ENDROIT" 3 fois (position [0] [0] [0], [1] [ 0] [0], et [2] [0] [0], pas une seule fois Cela semble être dû au fait que les listes sont aliasées ensemble plutôt que clonées, mais je les ai clonées explicitement
J'ai passé la dernière heure cognant ma tête dans la table à ce sujet. Vos propositions de solutions sont très appréciées!