0Pricing
Python Academy · Ders

itertools: Kombinatorik

Permütasyonlar, kombinasyonlar ve kartezyen çarpımlar oluşturun.

itertools: Kombinatorik, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

Kombinatorik Genel Bakış

itertools dört kombinatorik işlev sağlar: product, permutations, combinations ve combinations_with_replacement.

import itertools

# All orderings of 2 items from ABC
print(list(itertools.permutations("ABC", 2)))
# [(A,B),(A,C),(B,A),(B,C),(C,A),(C,B)]

product()

product(*iterables, repeat=1), iç içe for döngülerine eşdeğer olan Kartezyen çarpımı hesaplar.

import itertools

print(list(itertools.product([1,2], ["a","b"])))
# [(1,"a"),(1,"b"),(2,"a"),(2,"b")]

# repeat=2 pairs each element with itself
print(list(itertools.product(range(2), repeat=2)))
# [(0,0),(0,1),(1,0),(1,1)]

permutations()

permutations(it, r), uzunluğu r olan tüm sıralı dizilimleri üretir. Toplam: P(n,r) = n!/(n-r)!.

import itertools

result = list(itertools.permutations([1,2,3], 2))
print(result)
# [(1,2),(1,3),(2,1),(2,3),(3,1),(3,2)]
print(len(result))  # 6

combinations()

combinations(it, r), tekrarsız, uzunluğu r olan tüm sırasız seçimleri üretir. Toplam: C(n,r) = n!/(r!(n-r)!).

import itertools

result = list(itertools.combinations([1,2,3,4], 2))
print(result)
# [(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)]
print(len(result))  # 6

combinations_with_replacement()

combinations_with_replacement(it, r), bir öğenin bir kombinasyonda birden fazla kez görünmesine izin verir.

import itertools

result = list(itertools.combinations_with_replacement("AB", 2))
print(result)
# [(A,A),(A,B),(B,B)]

Somutlaştırmadan Sayma

Sırf saymak için tüm öğeleri üretmek yerine math.perm, math.comb veya len() kısayolunu kullanın (len() sonlu sonuçlarda çalışır).

import math

print(math.perm(10, 3))   # 720
print(math.comb(10, 3))   # 120

Parola/Anahtar Üretimi

Kombinatorik yineleyiciler, her şeyi belleğe yüklemeden aday anahtarlar veya sınama durumları üretmek için kullanışlıdır.

import itertools, string

chars = string.ascii_lowercase
# All 2-char lowercase combos:
for combo in itertools.combinations(chars, 2):
    pass  # process without materialising

product ile Izgara Koordinatları

İç içe döngüler kullanmadan 2B bir ızgarada yinelemek için product(range(rows), range(cols)) kullanın.

import itertools

for row, col in itertools.product(range(3), range(3)):
    print(f"({row},{col})", end=" ")

Tüm Alt Kümeleri Sınama

0'dan n'ye kadar her uzunluk için combinations üzerinde yineleyerek bir listenin tüm alt kümelerini oluşturun.

import itertools

items = [1, 2, 3]
all_subsets = []
for r in range(len(items)+1):
    all_subsets.extend(itertools.combinations(items, r))
print(all_subsets)

combinations ile Yinelenenleri Kaldırma

Her öğe çiftini tam olarak bir kez karşılaştırmak ve yinelenen (a,b) ile (b,a) karşılaştırmalarından kaçınmak için combinations kullanın.

import itertools

words = ["apple","apricot","banana","blueberry"]
for a, b in itertools.combinations(words, 2):
    if a[0] == b[0]:
        print(f"Same letter: {a}, {b}")

Performansla İlgili Noktalar

Kombinatorik diziler çok hızlı büyür. permutations(range(12)) 479 milyon sonuç üretir. Her zaman üreteçleri kullanın ve yalnızca ihtiyacınız olan sonuçları somutlaştırın.

import itertools, math

n = 12
print(f"P(12,12) = {math.factorial(n):,}")   # 479,001,600
# Never: list(itertools.permutations(range(12)))
# Instead: iterate lazily and break early

Hızlı Kontrol

Bir koleksiyondan tekrarsız tüm sırasız ikilileri hangi itertools işlevi üretir?

Özet

Kartezyen çarpımlar için product, sıralı dizilimler için permutations, sırasız alt kümeler için combinations ve öğelerin tekrarlanabildiği durumlarda combinations_with_replacement kullanın. Kombinatorik yineleyicileri her zaman tembel olarak işleyin.

Sıkça Sorulan Sorular

“itertools: Kombinatorik” dersi ücretsiz mi?

Evet — “itertools: Kombinatorik” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“itertools: Kombinatorik” dersinde ne öğreneceğim?

Permütasyonlar, kombinasyonlar ve kartezyen çarpımlar oluşturun. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“itertools: Kombinatorik” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. itertools: Sonsuz ve Sonlu Yineleyiciler
  2. itertools: Kombinatorik
  3. functools: partial ve reduce
  4. functools: lru_cache ve cached_property
← Python Academy Sayfasına Dön