0
votes

Obtenez toutes les permutations d'une liste dans Python sans duplicats?

J'essaie d'écrire un script qui obtient un ensemble de chaînes -

ablsu
abuls
lsabu
lsuab
uabls
ulsab


3 commentaires

Avoir une liste finale comme L = [] puis faire à l'intérieur du second pour la boucle l.append (Concat) .


"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.


4 Réponses :


1
votes

Vous pouvez utiliser des combinaisons et des permutations ensemble. Cela devrait pouvoir vous aider à aller xxx

sortie: xxx

vous pouvez gérer peigne comment vous Voir Fit


0 commentaires

0
votes
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']

0 commentaires

1
votes

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 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.

Saufième programme que vous pouvez utiliser en l'appelant avec 1/2 éléments dans la liste . P>

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


1 commentaires

Ne vous répétez pas! Je pense que vous pouvez utiliser le paramètre r de itheroTools.permutations pour accomplir la même chose. Vous auriez juste besoin d'une boucle extérieure, pour r dans la plage (...) .



0
votes
()
('ab',)
('ab', 'ls')
('ls', 'ab')
('ab', 'ls', 'u')
('ab', 'u', 'ls')
('ls', 'ab', 'u')
('ls', 'u', 'ab')
('u', 'ab', 'ls')
('u', 'ls', 'ab')

0 commentaires