Maison >développement back-end >Tutoriel Python >Comment puis-je générer efficacement des permutations uniques d'un 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!