Odak modu

Python Temel

List Comprehension

List Comprehensions


  • Yine o yeni bir şey öğrenmediğimiz ama yaptığımız şeyleri daha farklı ve kolay yapmayı öğrendiğimiz bir konudayız.


  • Diyelim ki 1'den 10'a kadar olan sayıların karelerinden bir liste oluşturmak istiyorum. Bunu aşağıdaki gibi yapabilirim.


squares = []

for i in range(1,11):
    squares.append(i*i)


squares


[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]


  • Bunun aynısını list comprehension kullanarak da yapabiliriz.


squares = [i * i for i in range(1,11)]


squares


[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]


# list comprehension ve fonksiyon mantığını birleştirme

def cube(x):
    return x * x * x # x ** 3


cubes = [cube(x) for x in range(1,11)]


cubes


[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]


List Comprehension'larda Conditional Yapıların Kullanılması


squares = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

print(squares)


[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]


odd_squares = []

for e in squares:
    
    if e % 2 == 1:
        odd_squares.append(e)


odd_squares


[1, 9, 25, 49, 81]


# squares listindeki tek elemanlardan yeni bir liste yaratmak

odd_squares = [e for e in squares if e % 2 == 1]


odd_squares


[1, 9, 25, 49, 81]


# bu test mantığını fonksiyonla da sağlayabilirdik

def is_odd(x): 
    
    if x % 2 == 0:
        return False
    
    if x % 2 == 1:
        return True


odd_squares = [e for e in squares if is_odd(e)]


odd_squares


[1, 9, 25, 49, 81]


def empty(x): 
    
    if x % 2 == 0:
        return False
    
    if x % 2 == 1:
        return False


empty_squares = [e for e in squares if empty(e)]


empty_squares


[]


def is_even(x):
    
    if x % 2 == 0:
        return True
    
    if x % 2 == 1:
        return False


even_squares = [e for e in squares if is_even(e)]


even_squares


[4, 16, 36, 64, 100]


squares


[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]


weird_squares = [e if e % 2 == 0 else -1 for e in squares]


weird_squares


[-1, 4, -1, 16, -1, 36, -1, 64, -1, 100]


ultra_weird_squares = [e if e % 2 == 0 else -1 for e in squares if is_even(e)]


# Q. Soru: Bunun çıktısı ne olur ?
ultra_weird_squares


[4, 16, 36, 64, 100]


Set Comprehension

numbers = [1,2,3,4,5,6,7,1,2]


set_numbers = {s for s in numbers if s in [1,2,3,4,5,6,1,2]}


set_numbers


{1, 2, 3, 4, 5, 6}


Dictionary Comprehension


square_dict = {e:e * e for e in range(1,11)}


square_dict


{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}


square_dict[9]


81


Nested List Comprehension


m = [[j for j in range(7)] for i in range(5)]


m = [[j for j in range(7)] for _ in range(5)]


m


[[0, 1, 2, 3, 4, 5, 6],
 [0, 1, 2, 3, 4, 5, 6],
 [0, 1, 2, 3, 4, 5, 6],
 [0, 1, 2, 3, 4, 5, 6],
 [0, 1, 2, 3, 4, 5, 6]]


m = [[10, 11, 12], [13, 14], [15, 16, 17, 18]] 


for l in m:
    print(l)


[10, 11, 12]
[13, 14]
[15, 16, 17, 18]


new_m = []
for l in m:
    print(l)
    for e in l:
        new_m.append(e)
        print(e)


[10, 11, 12]
10
11
12
[13, 14]
13
14
[15, 16, 17, 18]
15
16
17
18


new_m


[10, 11, 12, 13, 14, 15, 16, 17, 18]


m


[[10, 11, 12], [13, 14], [15, 16, 17, 18]]


# matrixi list comprehension ile flat etmek

flatten_m = [e for l in m for e in l]


flatten_m


[10, 11, 12, 13, 14, 15, 16, 17, 18]


# Sadece çift değerleri kabul edecek

flatten_m = [e for l in m for e in l if e % 2 == 0]


flatten_m


[10, 12, 14, 16, 18]


Background Pattern
Birlikte öğrenelim

Sektörde en çok aranan yazılım becerilerini kazan

Yapay zeka desteği, birebir mentörlük saatleri, canlı dersler ve senin için özel hazırlanmış içeriklerle eksiklerini tamamla, düzenli geri bildirimler al ve öğrenme sürecini en verimli hale getir.

Yunus Emre Kabakcı

Patika+ mezunu

Patika+ Fullstack Web Development Bootcamp mezunumuz Yunus Emre,

3 ay içinde Katar’dan aldığı teklif ile, global bir şirket olan Pavo Group’da işe başladı!


“İçerik zenginliği, mentor desteği, ileriye dönük bir network sağlaması ve dünyada en çok tercih edilen frameworkler üzerinden bir eğitim veriyor olması Patika+’ı tercih etmemin temel sebepleri oldu!“

Test

Hackerrank challenge

Yorumlar

Yorum yapabilmek için derse kayıt olmalısın!