Ich habe einige Probleme mit dem folgenden Skript. Es sollte 3 Kopien der folgenden Liste erstellen, damit sie unabhängig voneinander geändert werden können. Es scheint jedoch, 3 Klone der gleichen Liste zu erstellen, und wenn Sie eine ändern, ändern Sie sie alle. Hier ist die Funktion:Cloned Liste scheint als ein Alias zu funktionieren, obwohl explizit als ein Klon erklärt
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,[])
Beachten Sie, wie, wenn Sie dies ausführen, sehen Sie die Zeichenfolge "DIES IN EINEM ORT sollte" 3-mal (Position [0] [0] [0], [1] [ 0] [0], und [2] [0] [0], nicht einmal.Das scheint zu sein, weil die Listen zusammen aliased anstatt geklont sind. Jedoch habe ich es explizit geklont.
Ich habe die letzte Stunde verbracht mein Kopf in die Tabelle auf diese hämmern. Ihre Lösungsvorschläge sind sehr willkommen!