python list comprehension
Mevcut bir listenin değerlerine dayalı olarak yeni bir liste oluşturmak istediğimizde bize daha kısa bir söz dizimi sağlar.
sayilar= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] cift_sayilar= [] for x in sayilar: if x % 2 == 0: cift_sayilar.append(x) print(cift_sayilar) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
söz dizimi yapısı
newlist = [expression for item in iterable if condition == True]
bunu daha kısa biçimde elde etmek için
sayilar= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] cift_sayilar = [sayi for sayi in sayilar if sayi % 2 == 0] print(cift_sayilar)
Başka bir örnek
yazarlar= ['Kamil Akdoğan','İbrahim Türk','Ali H. Neyzi','Rob Haskins','Kolektif','Emily Bone','Sabahattin Ali','Ferhat Özbadem','Ömer Zülfe','Erdoğan Uygur','Nick Warburton','Victoria Alexander','Nuran Koltuk','Dag Solstad','Rosi Braidotti','Hugh Collins','Derya Edis','Osman Nuri Topbaş','Seyyid Muhammed Nurul-Arabi','Stuart Douglas','Ömer Faruk Yelkenci','Nihad Sami Banarlı','Şenay Saçbüker','Cathy Maxwell','Sema Karabıyık','Dr. Ökkeş Narinç','Hilal Altun','Esra Çanlı'] s_ile_baslayanlar = [yazar for yazar in yazarlar if yazar.startswith('S')] print(s_ile_baslayanlar) # ['Sabahattin Ali', 'Seyyid Muhammed Nurul-Arabi', 'Stuart Douglas', 'Sema Karabıyık']
herhangi bir kısıtlamaya tabi olmadan listedeki tüm elemanları büyük harflere çevirip yeni bir liste oluşturalım
authors= ['Gülru Necipoğlu','Ian Graham','Nuri Özcan','Chae Man-Sik','Barış Karaz','Yıldıray Aydın','Barbara Nowak','Zafer Şimşek','Andrew Marr','Dr. Frank J. Sileo','Hristo Tatarçev','D. D. Everest','Dr. Ayhan Biber'] authors_upper = [auth.upper() for auth in authors] print(authors_upper)
şimdide aynı listeden ismi sadece Nuri Özcan olanları Nuri Özcan olarak diğerlerini de Nuri değil olarak yeni bir listeye aktaralım
authors= ['Gülru Necipoğlu','Ian Graham','Nuri Özcan','Chae Man-Sik','Barış Karaz','Yıldıray Aydın','Barbara Nowak','Zafer Şimşek','Andrew Marr','Dr. Frank J. Sileo','Hristo Tatarçev','D. D. Everest','Dr. Ayhan Biber'] authors_nuri = [auth if auth =='Nuri Özcan' else 'Nuri Değil!' for auth in authors] print(authors_nuri)
şimdide nested list üzerinde işlemler yapalım
elimizde elemanları str türünden olan iç içe listelerin elemanlarını int türüne çevirip yeni bir liste elde edelim
str_numbers = [ ['50', '76', '21', '83'], ['62', '48', '1', '63', '53', '55', '96'], ['65', '9', '23', '25', '24', '11', '27', '17', '87'], ['120', '74', '32', '12', '73', '96', '28', '14', '45'], ['96', '65'], ['31', '45', '40', '47', '49'], ['55', '52', '14', '12'] ] int_numbers = [[int(y) for y in x] for x in str_numbers] print(int_numbers)