0Pricing
Coding Interview Prep · Ders

Kapsamlı İfadeler ve Yerleşik İşlevler

Liste, sözlük ve küme kapsamlı ifadelerini; map, filter, zip, enumerate ve key işlevleriyle sorted kullanımını kullanarak kısa çözümler yazın.

Kapsamlı İfadeler ve Yerleşik İşlevler, CoddyKit'te ücretsiz bir Coding Interview Prep dersidir. Bu, 4 dersinin 3. 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, Coding Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Coding Interview Prep kursu toplamda 4 dersten oluşur.

Liste Üreteçleri: Özlü Filtreleme

Bir liste üreteci, for döngüsü ile append işlemini tek ve temiz bir satıra dönüştürür: [expr for item in iterable if condition]. Biraz daha hızlıdır ve Python'a hâkim olduğunuzu gösterir.

# Traditional loop
squares = []
for n in range(1, 6):
    squares.append(n * n)
print(squares)  # [1, 4, 9, 16, 25]

# List comprehension
squares = [n * n for n in range(1, 6)]
print(squares)  # [1, 4, 9, 16, 25]

# With filter
evens = [n for n in range(10) if n % 2 == 0]
print(evens)    # [0, 2, 4, 6, 8]

İki Boyutlu Izgaralar için İç İçe Üreteçler

İç içe üreteçler, bir DP tablosu oluşturmanın standart yolu olan iki boyutlu ızgaraları kurar. Her satırda aynı iç listeyi paylaşan [[0]*C]*R ifadesinden kaçının. Kod düzeltmeyi gösterir.

# WRONG: all rows are the same object!
bad = [[0] * 3] * 3
bad[0][0] = 9
print(bad)  # [[9,0,0],[9,0,0],[9,0,0]]  oops!

# CORRECT: each row is a separate list
good = [[0] * 3 for _ in range(3)]
good[0][0] = 9
print(good)  # [[9,0,0],[0,0,0],[0,0,0]]

Sözlük ve Küme Üreteçleri

Sözlük ve küme üreteçleri süslü parantez kullanır: sözlük için {k: v for ...}, küme için {expr for ...}. İkisi de filtreleme yapabilir; böylece tek satırda dönüştürme veya yinelenenleri kaldırma işlemi gerçekleştirebilirsiniz.

# Dict comprehension: square lookup
sq_map = {n: n**2 for n in range(1, 6)}
print(sq_map)  # {1:1, 2:4, 3:9, 4:16, 5:25}

# Set comprehension: unique lengths
words = ['cat', 'dog', 'elephant', 'ant']
unique_lengths = {len(w) for w in words}
print(unique_lengths)  # {3, 8}  (order varies)

Üreteç İfadeleri: Bellek Dostu

Bir üreteci () içine alırsanız, değerleri birer birer üreten ve bellekten tasarruf sağlayan bir yapı elde edersiniz. Bunu doğrudan sum, max veya çok büyük diziler üzerinde çalışan herhangi bir işleve verebilirsiniz.

# List comprehension builds all values at once
total = sum([n**2 for n in range(1_000_000)])

# Generator yields one at a time — lower memory
total = sum(n**2 for n in range(1_000_000))
print(total)  # 333332833333500000

# any/all with generators short-circuit early
nums = [4, 6, 8, 3, 10]
has_odd = any(n % 2 == 1 for n in nums)
print(has_odd)  # True  (stops at 3)

map() ve filter(): İşlevsel Biçem

map her öğeye bir işlev uygular; filter ise bir testi geçenleri tutar. İkisi de tembel çalışır; sonuçları görmek için list() içine alın. Üreteçler çoğu zaman daha anlaşılırdır.

nums = [1, 2, 3, 4, 5]

# map: apply function to each element
doubled = list(map(lambda n: n * 2, nums))
print(doubled)  # [2, 4, 6, 8, 10]

# filter: keep elements passing predicate
evens = list(filter(lambda n: n % 2 == 0, nums))
print(evens)    # [2, 4]

# Equivalent comprehensions (often preferred)
doubled = [n * 2 for n in nums]
evens   = [n for n in nums if n % 2 == 0]

zip(): Dizileri Eşleştirme

zip iki diziyi eşleştirir ve kısa olanın sonuna gelince durur; iki liste üzerinde aynı anda döngü kurmanın temiz yoludur. zip(*matrix) yöntemi, iki boyutlu bir listeyi transpoze eder. Koda bakın.

keys   = ['a', 'b', 'c']
values = [1, 2, 3]

pairs = list(zip(keys, values))
print(pairs)  # [('a',1), ('b',2), ('c',3)]

# Build dict from two lists
d = dict(zip(keys, values))
print(d)      # {'a':1, 'b':2, 'c':3}

# Transpose a matrix
matrix = [[1,2,3],[4,5,6],[7,8,9]]
transposed = [list(row) for row in zip(*matrix)]
print(transposed)  # [[1,4,7],[2,5,8],[3,6,9]]

enumerate(): Dizin ve Değer

enumerate, döngü sırasında size (dizin, değer) çifti verir; range(len(lst)) kullanımından daha temizdir ve bir eksik-bir fazla hatalarını önler. Saymaya 1'den başlamak için start seçeneğini kullanın.

fruits = ['apple', 'banana', 'cherry']

# Instead of: for i in range(len(fruits)):
for i, fruit in enumerate(fruits):
    print(i, fruit)
# 0 apple / 1 banana / 2 cherry

# Start from 1
for i, fruit in enumerate(fruits, 1):
    print(f'{i}. {fruit}')
# 1. apple / 2. banana / 3. cherry

Anahtar İşlevleriyle sorted()

sorted yeni bir sıralanmış liste döndürür ve özel bir sıra için anahtar işlevi alır. Uzunluğa, bir demet alanına veya büyük-küçük harf duyarsız biçimde sıralama yapabilirsiniz. Kod, birden çok anahtarla sıralamayı gösterir.

# Sort by second element of tuple
intervals = [(1,3),(2,1),(0,5)]
print(sorted(intervals, key=lambda x: x[1]))
# [(2,1),(1,3),(0,5)]

# Sort strings case-insensitively
words = ['Banana', 'apple', 'Cherry']
print(sorted(words, key=str.lower))
# ['apple', 'Banana', 'Cherry']

# Sort by multiple keys: first by length, then alphabetically
words = ['fig', 'apple', 'ant', 'kiwi']
print(sorted(words, key=lambda w: (len(w), w)))
# ['ant', 'fig', 'kiwi', 'apple']

Anahtarla min() ve max()

min ve max işlevleri de bir anahtar alır; böylece eşlenen değeri en küçük veya en büyük öğeyi tek çağrıda seçebilirsiniz; örneğin en uzun sözcüğü. Koda bakın.

words = ['banana', 'fig', 'strawberry', 'kiwi']

longest = max(words, key=len)
print(longest)   # strawberry

shortest = min(words, key=len)
print(shortest)  # fig

# Find interval with earliest end
intervals = [(2,6),(1,3),(4,5)]
earlist_end = min(intervals, key=lambda x: x[1])
print(earlist_end)  # (1, 3)

Kısa Devreli Denetimler için any() ve all()

any doğru kabul edilen ilk öğede durur; all ise yanlış kabul edilen ilk öğede durur. İkisi de kısa devreli çalışır; bu nedenle bir üreteçle birlikte kullanıldığında koşulları hızlı ve tembel biçimde denetler.

nums = [2, 4, 6, 7, 8]

all_even = all(n % 2 == 0 for n in nums)
print(all_even)  # False  (7 is odd)

has_large = any(n > 5 for n in nums)
print(has_large) # True  (6 qualifies, stops there)

# Practical: check if sudoku row has no duplicates
row = [1, 2, 3, 4, 5, 6, 7, 8, 9]
valid = all(1 <= n <= 9 for n in row) and len(set(row)) == 9
print(valid)  # True

sum(), abs() ve divmod()

Üç matematik yardımcısı her yerde karşınıza çıkar: sum, abs ve divmod. divmod(a, b), bölüm ile kalanı aynı anda döndürür; basamakları ayıklamak için idealdir.

# sum with generator
print(sum(n**2 for n in range(1, 6)))  # 55

# abs for distance problems
print(abs(-7))   # 7

# divmod for digit extraction
num = 1234
digits = []
while num:
    num, d = divmod(num, 10)
    digits.append(d)
digits.reverse()
print(digits)  # [1, 2, 3, 4]

Kısa Kontrol

Kısa bir kontrol yapalım: Üreteçlerin ve yerleşik işlevlerin ne kadar iyi anlaşıldığını görelim. Tek bir soru var; bunu yapabilirsiniz. ✅

Ders Özeti

Özet: üreteçler döngüleri tek satırlık ifadelere dönüştürür, zip ve sorted gibi yerleşik işlevler anahtar işlevleri alır ve üreteçler tek geçişli işlemlerde bellekten tasarruf sağlar.

Sıkça Sorulan Sorular

“Kapsamlı İfadeler ve Yerleşik İşlevler” dersi ücretsiz mi?

Evet — “Kapsamlı İfadeler ve Yerleşik İşlevler” 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 Coding Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Coding Interview Prep kursu toplamda 4 dersten oluşur.

“Kapsamlı İfadeler ve Yerleşik İşlevler” dersinde ne öğreneceğim?

Liste, sözlük ve küme kapsamlı ifadelerini; map, filter, zip, enumerate ve key işlevleriyle sorted kullanımını kullanarak kısa çözümler yazın. Coding Interview Prep 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.

Coding Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Coding Interview Prep, 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 3. dersidir.

“Kapsamlı İfadeler ve Yerleşik İşlevler” 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 Coding Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Coding Interview Prep 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. Listeler, Demetler ve Dilimleme
  2. Python’da Sözlükler ve Kümeler
  3. Kapsamlı İfadeler ve Yerleşik İşlevler
  4. İşlevler, Kapanımlar ve Lambda
← Coding Interview Prep Sayfasına Dön