Maison >développement back-end >Tutoriel Python >Comment puis-je générer efficacement des permutations uniques d'un multiset ?

Comment puis-je générer efficacement des permutations uniques d'un multiset ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-13 10:53:12763parcourir

How Can I Efficiently Generate Unique Permutations of a Multiset?

Comptage des permutations uniques

La fonction de permutations d'Itertools traite les éléments comme uniques par leur position et non par leur valeur. En conséquence, des doublons peuvent apparaître, comme dans l'exemple fourni : [(1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1), (1 , 1, 1), (1, 1, 1)].

Éviter les doublons

La demande initiale concernait un algorithme qui évite ces doublons sans recourir au post-filtrage en raison du grand nombre de permutations impliquées.

Permutations multiset dans sympy

Pour de tels cas, sympy propose l'itérateur multiset_permutations . Contrairement aux permutations, cet itérateur traite les éléments comme uniques en fonction de leurs valeurs et non de leurs positions.

Considérez les exemples suivants :

>>> from sympy.utilities.iterables import multiset_permutations
>>> list(multiset_permutations([1,1,1]))
[[1, 1, 1]]
>>> list(multiset_permutations([1,1,2]))
[[1, 1, 2], [1, 2, 1], [2, 1, 1]]

Comme vous pouvez le voir, multiset_permutations ne produit que des permutations uniques.

🎜>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn