itertools Permutation: Gibt nur bestimmte Kombinationen zurück
Daniel
Ich möchte eine Funktion schreiben, die eine Liste (in diesem Fall die Namen der Ports) erstellt und alle möglichen Reihenfolgen dieser Ports ausgibt. Die Reihenfolge, in der die Permutationen gedruckt werden, spielt keine Rolle, aber sie sollten alle mit Panama (PAN) beginnen.
Bisher habe ich den Punkt erreicht, alle Permutationen auszudrucken, aber ich kann immer nicht nur die Kombinationen ausdrucken, die mit PAN beginnen. Irgendwelche Ideen, wie / wo ich meinen Code ändern kann?
import itertools
portnames = ["PAN", "AMS", "CAS", "NYC", "HEL"]
def permutations(route, ports):
# write the recursive function here
# remember to print out the route as the recursion ends
sum = route + ports
perms = list(itertools.permutations(sum))
for perm in perms:
output = []
for item in perm:
output.append(portnames[item])
print(output)
# this will start the recursion with 0 as the first stop
permutations([0], list(range(1, len(portnames))))
Nick
Sie können den route
Startport ( in Ihrem Code) aus der Liste der Portnamen entfernen und dann alle Permutationen der verbleibenden Werte abrufen. Stellen Sie dann einfach den Startport vor jede dieser Permutationen:
import itertools
portnames = ["PAN", "AMS", "CAS", "NYC", "HEL"]
def permutations(route, ports):
ports.remove(route)
perms = itertools.permutations(ports)
for perm in perms:
output = [route] + list(perm)
print(output)
# this will start the route with 'PAN' as the first stop
permutations('PAN', portnames)
Ausgabe:
['PAN', 'AMS', 'CAS', 'NYC', 'HEL']
['PAN', 'AMS', 'CAS', 'HEL', 'NYC']
['PAN', 'AMS', 'NYC', 'CAS', 'HEL']
['PAN', 'AMS', 'NYC', 'HEL', 'CAS']
['PAN', 'AMS', 'HEL', 'CAS', 'NYC']
['PAN', 'AMS', 'HEL', 'NYC', 'CAS']
['PAN', 'CAS', 'AMS', 'NYC', 'HEL']
['PAN', 'CAS', 'AMS', 'HEL', 'NYC']
['PAN', 'CAS', 'NYC', 'AMS', 'HEL']
['PAN', 'CAS', 'NYC', 'HEL', 'AMS']
['PAN', 'CAS', 'HEL', 'AMS', 'NYC']
['PAN', 'CAS', 'HEL', 'NYC', 'AMS']
['PAN', 'NYC', 'AMS', 'CAS', 'HEL']
['PAN', 'NYC', 'AMS', 'HEL', 'CAS']
['PAN', 'NYC', 'CAS', 'AMS', 'HEL']
['PAN', 'NYC', 'CAS', 'HEL', 'AMS']
['PAN', 'NYC', 'HEL', 'AMS', 'CAS']
['PAN', 'NYC', 'HEL', 'CAS', 'AMS']
['PAN', 'HEL', 'AMS', 'CAS', 'NYC']
['PAN', 'HEL', 'AMS', 'NYC', 'CAS']
['PAN', 'HEL', 'CAS', 'AMS', 'NYC']
['PAN', 'HEL', 'CAS', 'NYC', 'AMS']
['PAN', 'HEL', 'NYC', 'AMS', 'CAS']
['PAN', 'HEL', 'NYC', 'CAS', 'AMS']