Ce face itertools.combinations() și combinations_with_replacement()
combinations(colectie, r) produce grupurile de câte r elemente, fiecare grup o singură dată, păstrând ordinea din colecție. (a, b) și (b, a) sunt același grup, deci apare doar primul.
combinations_with_replacement() permite ca același element să apară de mai multe ori în grup (de exemplu (a, a)). Numărul de combinații este math.comb(n, r).
Parametri
| Parametru | Descriere |
|---|---|
iterabil |
Elementele. |
r |
Mărimea fiecărui grup. |
Ce returnează
Un iterator de tupluri.
Exemple
Exemplul 1: Meciuri și cupe de înghețată
from itertools import combinations, combinations_with_replacement
import math
echipe = ["A", "B", "C", "D"]
meciuri = list(combinations(echipe, 2))
print(meciuri, len(meciuri), math.comb(4, 2))
print(list(combinations_with_replacement(["vanilie", "ciocolată"], 2)))
Rezultat
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')] 6 6
[('vanilie', 'vanilie'), ('vanilie', 'ciocolată'), ('ciocolată', 'ciocolată')]
Greșeli frecvente
- Folosești
permutationscând ordinea nu contează și numeri fiecare pereche de două ori.
Comenzi înrudite
itertools.permutations(): Toate aranjamentele posibile ale elementelor, în care ordinea contează.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ă).