J'essaie d'écrire un script qui obtient un ensemble de chaînes -
ablsu abuls lsabu lsuab uabls ulsab
4 Réponses :
Vous pouvez utiliser des combinaisons et des permutations ensemble. Cela devrait pouvoir vous aider à aller sortie: p> vous pouvez gérer peigne code> comment vous Voir Fit P> P>
stuff = ["ab", "ls", "u"] final_list = [] for subset in itertools.permutations(stuff): concat = "" for part in subset: concat = concat + part final_list.append(concat) print(final_list) ['ab', 'abls', 'ablsu', 'ab', 'abu', 'abuls', 'ls', 'lsab', 'lsabu', 'ls', 'lsu', 'lsuab', 'u', 'uab', 'uabls', 'u', 'uls', 'ulsab']
Comme vous donnez la liste avec 3 éléments, des permutations vous permettent de récupérer les 3 éléments.
Vous devez fournir 1 élément pour obtenir votre Saufième programme que vous pouvez utiliser en l'appelant avec 1/2 éléments dans la liste . P> AB code> /
ls code> /
u code> en sortie.
Vous devez fournir 2 éléments pour obtenir votre
AB LS code> /
AB u code> dans la sortie.
stuff = ["ab", "ls", "u"]
for subset in itertools.permutations(stuff):
concat = ""
for part in subset:
concat = concat + part
#the rest of my script now uses this data
stuff = ["ab", "ls"]
for subset in itertools.permutations(stuff):
concat = ""
for part in subset:
concat = concat + part
stuff = ["ls", "u"]
for subset in itertools.permutations(stuff):
concat = ""
for part in subset:
concat = concat + part
Ne vous répétez pas! Je pense que vous pouvez utiliser le paramètre r code> de
itheroTools.permutations code>
pour accomplir la même chose. Vous auriez juste besoin d'une boucle extérieure, pour r dans la plage (...) code>.
() ('ab',) ('ab', 'ls') ('ls', 'ab') ('ab', 'ls', 'u') ('ab', 'u', 'ls') ('ls', 'ab', 'u') ('ls', 'u', 'ab') ('u', 'ab', 'ls') ('u', 'ls', 'ab')
Avoir une liste finale comme L = [] puis faire à l'intérieur du second pour la boucle
l.append (Concat) code>.
"Ne les utilise pas nécessairement tous" - Pourriez-vous développer cela? Il semble que cela puisse être important, comme si vous ne voulez finalement pas certaines combinaisons, cela pourrait avoir plus de sens de ne pas la déranger de les générer.
Je voulais dire que je voulais ceux qui n'étaient pas la pleine longueur de 3.