Ich habe ähnlich gesehen, aber nicht das gleiche: here. Ich möchte auf jeden Fall die Permutationen, nicht Kombinationen, aller Listenelemente. Meins ist anders, weil itertools Permutation von a, b, c abc zurück gibt, aber nicht aba (soooo nah). Wie kann ich Ergebnisse wie aba zurück erhalten?ALLE Permutationen einer Liste mit Wiederholung, aber nicht verdoppelt
('a',) <-excellent
('b',) <-excellent
('c',) <-excellent
('a', 'b') <-excellent
('a', 'c') <-excellent
('b', 'a') <-excellent
('b', 'c') <-excellent
('c', 'a') <-excellent
('c', 'b') <-excellent
('a', 'b', 'c') <-- I need a,b,a
('a', 'c', 'b') <-- I need a,c,a
('b', 'a', 'c') <-- I need b,a,b... you get the idea
Oh maximale Länge von Permutationen ("r" in der python.org itertools) gleich len (Liste), und ich will nicht 'Doppel' wie aab oder abb schließen ... oder abba: P Die Liste könnte beliebig lang sein.
import itertools
from itertools import product
my_list = ["a","b","c"]
#print list(itertools.permutations(my_list, 1))
#print list(itertools.permutations(my_list, 2))
#print list(itertools.permutations(my_list, 3)) <-- this *ALMOST* works
kombinierte ich die oben in eine for-Schleife
def all_combinations(varsxx):
repeat = 1
all_combinations_result = []
for item in varsxx:
if repeat <= len(varsxx):
all_combinations_result.append(list(itertools.permutations(varsxx, repeat)))
repeat += 1
return all_combinations_result
Als Referenz, wenn ich das auf dem Papier tat bekam ich 21 Ergebnisse.
Es gibt auch einen Vorteil bei der Umwandlung der Liste der Zeichenfolgen in eine Liste von Zahlen. Mein Gedanke war, dass es einfacher wäre mit Zahlen für das Permutationswerkzeug zu arbeiten. Strings könnten 10 bis 50 Zeichen lang sein.
Sie müssen beschreiben, was Sie genau genauer wollen. –