Ce face itertools.permutations()
permutations(colectie, r) produce toate tuplurile de lungime r formate din elemente diferite ale colecției, în toate ordinile posibile. Fără r, folosește toate elementele (permutări complete).
Elementele sunt considerate diferite după poziție, nu după valoare: o colecție cu valori repetate produce rezultate repetate. Numărul de rezultate este math.perm(n, r).
Parametri
| Parametru | Descriere |
|---|---|
iterabil |
Elementele. |
r |
Opțional. Lungimea fiecărui aranjament. |
Ce returnează
Un iterator de tupluri.
Exemple
Exemplul 1: Ordinea de pe podium
from itertools import permutations
import math
concurenti = ["Ana", "Dan", "Ioana"]
for podium in permutations(concurenti, 2):
print(podium)
print(len(list(permutations(range(5)))), math.perm(5))
print(["".join(p) for p in permutations("aab")])
Rezultat
('Ana', 'Dan')
('Ana', 'Ioana')
('Dan', 'Ana')
('Dan', 'Ioana')
('Ioana', 'Ana')
('Ioana', 'Dan')
120 120
['aab', 'aba', 'aab', 'aba', 'baa', 'baa']
Greșeli frecvente
- Generezi permutările unei liste de 12 elemente sau mai mult. Sunt sute de milioane; gândește un algoritm care nu le încearcă pe toate.
Comenzi înrudite
itertools.combinations() și combinations_with_replacement(): Toate grupurile de r elemente dintr-o colecție, fără să conteze ordinea.itertools.product(): Produsul cartezian: toate combinațiile formate cu câte un element din fiecare colecție.math.comb() și math.perm(): Numărul de combinări (ordinea nu contează) și de aranjamente (ordinea contează).