CodeBlanks Logo Icon CodeBlanks

İç içe comprehension

İç içe comprehension'ları öğrenirsin.

İç içe comprehension

Bir comprehension içerisine birden fazla for yan tümcesi yazılabilir. Bu, iç içe döngülere karşılık gelir:

pairs = [(a, b) for a in [1, 2] for b in [3, 4]]
# [(1, 3), (1, 4), (2, 3), (2, 4)]

Ilk for dış döngü, ikinci for iç döngüdür. Sonuç, her (a, b) çiftini sırayla listeler.

İç içe comprehension karmasiklastiginda okunabilirlik zorlaşır; o zaman klasik döngü tercih edilebilir.

Matristen liste

İç içe comprehension, bir matrisin tüm elemanlarını düz bir listeye çevirmek (flatten) için elverislidir:

matrix = [[1, 2], [3, 4]]
flat = [n for row in matrix for n in row]
# [1, 2, 3, 4]

önce row matristen alınır, sonra n o row'dan alınır. Bu, çok kısa bir yazımdır.

Uygulama Çarpım tablosu üret

products değişkenine, a [1, 2] ve b [3, 4] listelerinin tüm çiftleri için a * b hesaplayan iç içe bir comprehension ata. Sonra print(products) yazdır.

Başlangıç kodu

main.py
# Ic ice comprehension ile carpimlar

Örnek çözüm

main.py
products = [a * b for a in [1, 2] for b in [3, 4]]
print(products)

Beklenen çıktı

[3, 4, 6, 8]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 İç içe parçaları eşleştir

Kavram Anlamı
for a in [1, 2] Dış döngü
for b in [3, 4] İç döngü
(a, b) Ifade
[...] Sonuç listesi

2 İç içe comprehension'i tamamla

Soru
flat = [n for row in matrix for ____ in row]
Cevap
flat = [n for row in matrix for n in row]

Açıklama: İç döngü n'i row'dan alır.

3 [(a, b) for a in [1, 2] for b in [3]] ne üretir?

  • [(1, 3)]
  • [(2, 3)]
  • [(1, 3), (1, 4), (2, 3), (2, 4)]
  • [(1, 3), (2, 3)] Doğru cevap

Açıklama: a=1,b=3 ve a=2,b=3 çiftleri oluşur.

Başlangıç bölümündeki tüm dersler