[PYTHON] Génération de séquence

Génération de séquence

Générer une séquence à l'aide de la permutation itertools itertools est un module de génération d'itérateur.

test_permutation.py


import itertools
print('permutations(range(4))   : ', list(itertools.permutations(range(4) ) ) )
print('permutations(range(4), 2): ', list(itertools.permutations(range(4), 2 ) ) )

permutations(range(4)) : [(0, 1, 2, 3), (0, 1, 3, 2), (0, 2, 1, 3), (0, 2, 3, 1), (0, 3, 1, 2), (0, 3, 2, 1), (1, 0, 2, 3), (1, 0, 3, 2), (1, 2, 0, 3), (1, 2, 3, 0), (1, 3, 0, 2), (1, 3, 2, 0), (2, 0, 1, 3), (2, 0, 3, 1), (2, 1, 0, 3), (2, 1, 3, 0), (2, 3, 0, 1), (2, 3, 1, 0), (3, 0, 1, 2), (3, 0, 2, 1), (3, 1, 0, 2), (3, 1, 2, 0), (3, 2, 0, 1), (3, 2, 1, 0)] permutations(range(4), 2): [(0, 1), (0, 2), (0, 3), (1, 0), (1, 2), (1, 3), (2, 0), (2, 1), (2, 3), (3, 0), (3, 1), (3, 2)]

Vous pouvez facilement générer une séquence comme celle-ci. Vous pouvez décider du nombre de nombres dans la séquence en mettant un itérable dans le premier argument et le deuxième argument.

Puisque seules les positions itérables reçues (liste, etc.) sont prises en compte dans cette génération de séquence, elle sera dupliquée si le même nombre etc. est inclus. Par exemple, si vous passez «[1,2,2]», «1,2,2» est uniquement considéré comme «0,1,2» dans «.permutations». On ne considère donc pas que le même numéro apparaîtra. La solution la plus rapide consiste à éliminer la duplication avec set (). Notez que set () utilisera beaucoup de mémoire lorsque le nombre de colonnes devient grand.

Recommended Posts

Génération de séquence
[python] Générer une séquence qui considère les mêmes éléments
Génération d'ensembles de données
# Génération de chaînes aléatoires
Génération automatique de mosaïques