Avec itertools.permutations, des éléments supplémentaires sont générés pour le même élément. Utilisé lors du traitement des mêmes numéros, des mêmes caractères, du même ordre, etc. Je l'ai présenté plus tôt dans Comment utiliser le générateur, mais je l'ai présenté seul car il était difficile pour moi de le trouver. github source: permutation.py
permutation.py
def permutations(iterable, permutation=[]):
if not iterable:
yield permutation
pass
for i in [iterable.index(i) for i in set(iterable)]:
yield from permutations(iterable[:i] + iterable[i+1:], permutation + [iterable[i]])
Le rendement est-il récursif? De plus, il renvoie le rendement à distance. Je le règle à chaque fois pour éviter la duplication du même élément.
Cela semble un peu lent à coller avec des tranches, alors dites-moi s'il existe un bon moyen.
Recommended Posts