itertools.combinations() și combinations_with_replacement() în Python

Modulul itertools Python 3.0+ (with_replacement: 3.1+)

Toate grupurile de r elemente dintr-o colecție, fără să conteze ordinea.

Sintaxă
itertools.combinations(iterabil, r)
itertools.combinations_with_replacement(iterabil, r)

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 permutations când ordinea nu contează și numeri fiecare pereche de două ori.

Comenzi înrudite