Ich habe diesen einfachen Code hier läuft für Projekt Euler Frage 31.Python List Werte werden geändert/mutiert
Der Euler Q ist nicht erforderlich; Ich möchte nur wissen, warum meine Listenwerte mutiert werden, d. H. Es wird eine Liste mit vielen Listen von [2.0, 2.0, 2.0, 2.0, 2.0] gedruckt.
coins = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1.0, 2.0]
perms = []
def check(c):
if sum(c) == 2:
print c, "lol", sum(c)
perms.append(c)
return perms
c = [0] * 5
for c[0] in coins:
for c[1] in coins:
for c[2] in coins:
for c[3] in coins:
for c[4] in coins:
check(c)
print perms
Arbeit wird dadurch nicht aus irgendeinem Grund und der Ausgang
[[2.0, 2.0, 2.0, 2.0, 2.0], [2.0, 2.0, 2.0, 2.0, 2.0]...]
perms = []
for c1 in coins:
for c2 in coins:
for c3 in coins:
for c4 in coins:
for c5 in coins:
if c1+c2+c3+c4+c5 == 2:
print c1,c2,c3,c4,c5
perms.append([c1,c2,c3,c4,c5])
print perms
jedoch ist, diese funktioniert, und der Ausgang ist
[[0.1, 0.2, 0.2, 0.5, 1.0], [0.1, 0.2, 0.2, 1.0, 0.5], [0.1, 0.2, 0.5, 0.2, 1.0],[0.1, 0.2, 0.5, 1.0, 0.2], [0.1, 0.2, 1.0, 0.2, 0.5], [0.1, 0.2, 1.0, 0.5, 0.2],[0.1, 0.5, 0.2, 0.2, 1.0], [0.1, 0.5, 0.2, 1.0, 0.2]...]
Was ist der Unterschied zwischen den beiden ist ?
Und auch, wie kann ich meinen Code, vielleicht eine rekursive Funktion verkürzen? Damit statt c1 in Münzen, c2 in Münzen usw., ich habe nur ein oder zwei Schleifen, um die gleiche Arbeit zu tun.
* "Vielleicht eine rekursive Funktion?" * Ja, das wäre hier besser. – jDo