Intermediate Python Articles #1

  • Konbuyu başlatan PwnLab.Me
  • Başlangıç tarihi
P

PwnLab.Me

Admin
Katılım
21 Ocak 2024
Mesajlar
202
Tepkime puanı
9
Puanları
18
Süleyman KAYA tarafından yazılmıştır.

[TR] Intermediate Python Articles #1​

Python’da Veri Tipleri​


Selam, Ben Süleyman Kaya! Siber güvenlik ve bilgisayar bilimleri araştırmacısıyım. Sizlere öğrenirken edindiğim tecrübelerimi ve notlarımı aktarmaya çalışacağım. Bu dönemde, ilerleyen zaman içinde sıkça kullanacağımız için Python programlama dili hakkında makaleler yazmayı planlıyorum. Bu yazımda veri tiplerine değindim. Faydası olması dileğiyle.

Veri Tipi Nedir?​


İlk olarak sıkça duyduğumuz “Veri Tipi” nedir, ne anlama geliyor bunu kavramaya çalışalım. Veri tipi/türü, bilgisayar programlamasının tür sisteminde veriyi açıklamak üzere kurulmuştur. Bu yazımda bir program yazarken sıkça kullandığımız veri tiplerinden List, Tuple, Dictionary ve Set veri tiplerinin kullanımına değineceğim. Amatör bir yazılımcı ya da yeni başlayan biri için projeyi kodlarken, veya başlangıç seviyesinin üstüne çıkmak için hangi veri tiplerini nasıl kullanacağını bilmek faydalı olur. O zaman hadi, başlayalım!

Lists (Listeler)​


Listeler (lists), sıralı ve değiştirilebilir bir veri koleksiyonudur. Liste içinde duplicate’e (yinelenen liste elemanlarına) izin verir.

Bir liste oluşturalım​


Listeler köşeli parantezler veya Python’da yerleşik gelen ‘list()’ fonksiyonu ile oluşturulur.

Kod:
list_1 = ["banana", "cherry", "apple"]
print(list_1)

# Or create an empty list with the list function
list_2 = list()
print(list_2)

# Lists allow different data types
list_3 = [5, True, "apple"]
print(list_3)

# Lists allow duplicates
list_4 = [0, 0, 1, 1]
print(list_4)

Listenin elemanlarını bulalım​


Listenin elemanlarına index numarası aracılığıyla ulaşabilirsiniz. Unutmayın, index numaraları 0’dan başlar.

Kod:
eleman1 = liste_1[0]
print(eleman1)

# Index'lerde negatif sayı kullanırsanız, örneğin -1, sondan 1. yani sonuncu index'e değer atamış olursunuz.
# -2 de sondan ikinci öğeye index atar
eleman = list_1[-1]
print(eleman)

Liste elemanlarını değiştirelim​


Bunun için değiştirmek istediğiniz verinin index numarasını belirtin ve yeni bir değer atayın.

Kod:
# Listeler oluşturulduktan sonra değiştirilebilir
# Örneğin liste_1'in ikinci elemanını 'havuç' değeri ile değiştirelim
liste_1[2] = "havuc"
print(list_1)

Sıkça kullandığımız liste olayları​


Kullanılan metodlara göz atmanız için Python Dökümanı ‘nı öneririm.

Kod:
listem = ["oyuncak", "kitap", "bilgisayar"]

# len() : Listede mevcut eleman sayısını bu fonksiyonla öğreniriz.
print("Eleman Sayisi:", len(listem))

# append() : Listemizin sonuna yeni bir eleman ekler
listem.append("keman")

# insert() : Belirlediğimiz index'e eleman ekler
listem.insert(1, "kalimba")
print(listem)

# pop() : Listeden belirlediğimiz bir elemanı çıkarır, varsayılan olarak sonuncu elemanı çıkarır.
cikarilan_eleman = listem.pop()
print("Cikarilan Eleman: ", cikarilanEleman)

# remove() : Listeden bir elemanı siler
listem.remove("karpuz") # Eger bu eleman lsitede yoksa hata verir
print(listem)

# clear() : Listedeki tüm elemanları siler
listem.clear()
print(listem)

# reverse() : Listedeki elemanları tersine dizer
listem = ["oyuncak", "kitap", "bilgisayar"]
listem.reverse()
print('Tersine Liste: ', listem)

# sort() : Elemanları alfabetik sıraya ve artan sıra düzenine göre dizer
listem.sort()
print('Duzenlenmis Hali: ', listem)

# Düzensiz listemizden bağımsız olarak düzenlenmiş bir liste de alabiliriz.
# Böylelikle düzenlenmiş listeyi kurcalarken asıl listeyi bozmayız.
listem = ["oyuncak", "kitap", "bilgisayar"]
yeni_liste = sorted(listem)

# Tekrarlanan elemanlardan oluşan bir liste oluşturalım,
# Bir elemandan 7 tane olsun
listem2 = ["Suleyman"] * 7
print(listem2)

# Listeleri birleştirme
birlesmis_listem = listem1 + listem2
print(list_concat)

# Bir liste oluşturalım ve her elemanı belirttiğimiz string'in bir harfi olsun
string_elemanlari = list('Hello')
print(string_elemanlari)
Kod:

Liste kopyalama​


Kod:
orijinal_liste = ["oyuncak", "kitap", "bilgisayar"]

# Bir listeyi sadece isim olarak kopyalamak, onu kopyaladığımız anlamına gelmez
# Yani isim kopyası ile orijinal liste birbirine bağımlıdır.
kopya_liste = orijinal_liste

# Kopyayı değiştirmek orijinali de etkiler
kopya_liste.append(True)
print(kopya_liste)
print(orijinal_liste)

# Fakat copy() fonksiyonunu kullanmak ya da list(x) fonksiyonunu kullanmak orijinal listeden bağımsız yeni bir kopyasını oluşturur.
# Dilimleme metodu da işimizi görür: kopya_liste = orijinal_liste[:]
orijinal_liste = ["oyuncak", "kitap", "bilgisayar"]

kopya_liste = orijinal_liste.copy()
# kopya_liste = list(orijinal_liste)
# kopya_liste = orijinal_liste[:]

# Şimdi ise kopyayı düzenlemek orjinali etkilemeyecektir.
kopya_liste.append(True)
print(kopya_liste)
print(orijinal_liste)

Listeyi Sıralama​


Kod:
# For döngüsü kullanarak listemizdeki elemanları sıralayalım
for i in liste_1:
    print(i)

Listede Eleman Tespiti​


Kod:
# Listemizde 'saat' diye bir eleman var mı yok mu kontrol edelim
# Varsa ekrana 'var' yazdıralım, yoksa 'yok'.
if "saat" in liste_1:
    print("var")
else:
    print("yok")

Liste Bölme​


Kod:
# a[Başlangıç Değeri:Bitiş Değeri:Kaçar Adımla], var sayılan adım değeri 1
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = a[1:3] # Unutmayın, belirttiğimiz son index bölme işlemine dahil değildir.
print(b)
b = a[2:] # Sonuna kadar
print(b)
b = a[:3] # Başlangıçtan itibaren
print(b)
b = a[::2] # Başlangıçtan sona, 2'şer adımla böl
print(b)
a = a[::-1] # Negatif index kullanarak listeyi tersine dizebilirsiniz:
print(a)
b = a[:] # Bir listeyi baştan sona bu işlem aracılığıyla kopyalayabilirsiniz
print(b)

Tuples​


Tuple’lar sıralı ve değişmez olan bir veri koleksiyonudur. Tuple’lar listelere benzer, temel fark değişmezliktir. Python’da tuple’lar parantezler ve virgülle ayrılmış değerlerle yazılır.

Neden Listeler Yerine Tuple Kullanırız?​

  • Tuple değişmez olduğundan, tuple aracılığıyla yineleme listeden biraz daha hızlıdır.
  • Değişmez öğeleriyle tuple’lar, bir dictionary için key olarak kullanılabilir. Listelerle bu mümkün değildir.

  • Değişmeyen verileriniz varsa, onu tuple olarak uygulamak, yazmaya karşı korumalı kalmasını garanti edecektir.

Tuple Oluşturalım​


Tuple’lar, parantezler ve virgülle ayrılmış değerlerle oluşturulur. Veya Python’daki tuple() fonksiyonunu kullanabilirsiniz.

Kod:
tuple_1 = ("Suleyman", 15, "Aksaray")
tuple_2 = "Kaya", 15, "Kirsehir" # Parantezler tercih meselesidir.

# Parantez içinde bir veri olduğu ve bu verinin sonunda virgül olduğu sürece bunu tuple olarak tanımlarız
tuple_3 = (25,)
Kod:
print(tuple_1)
print(tuple_2)
print(tuple_3)

# Yada bir sıralı veri tipine dönüştürün (liste, dictionary, string)
tuple_4 = tuple([1,2,3])
print(tuple_4)

Tuple Elemanları​


Indexlerine bakarak tuple elemanlarına erişirsiniz. Indexlerin 0’dan başladığını unutmayın.

Kod:
eleman = tuple_1[0]
print(eleman)
# Negatif sayıları da indexte kullanabilirsiniz, örneğin -1 sondan birinci,
# -2 de sondan ikinci elemanın indexi olacaktır
eleman = tuple_1[-1]
print(eleman)

Tuple Elemanlarını Değiştirme​


Bu mümkün değildir çünkü Tuple veri tipi unmutable’dır.

Tuple’ları silme​


del tuple_1

Elemanları Sıralama​


Kod:
for i in tuple_1:
    print(i)

Tuple’da Eleman Kontrolü​


Kod:
tuple_1 = ('Aksaray', 'Kırşehir', 'Konya')
if "Konya" in tuple_1:
    print("yes")
else:
    print("no")

Faydalı Fonksiyonlar​


Kod:
my_tuple = ('a','p','p','l','e',)

# len() : Tuple'da mevcut eleman sayısını verir
print(len(my_tuple))

# count(x) : x yerine girilen elemandan kaç tane mevcut olduğu bilgisini verir
print(my_tuple.count('p'))

# index(x) : x'in index numarasını verir
print(my_tuple.index('l'))

# Tekrarlayarak veri kaydetme
my_tuple = ('a', 'b') * 5
print(my_tuple) # a ve b'yi 5'er kez tuple içine kaydeder

# Tuple'ları birleştirme
my_tuple = (1,2,3) + (4,5,6)
print(my_tuple)

# Liste veri türü ile tuple arasında dönüşüm
my_list = ['a', 'b', 'c', 'd']
list_to_tuple = tuple(my_list)
print(list_to_tuple)

tuple_to_list = list(list_to_tuple)
print(tuple_to_list)

# String'i tuple'a çevirme
string_to_tuple = tuple('Merhaba')
print(string_to_tuple)

Tuple’ları Bölme​


Kod:
# a[Başlangıç:Son:Kaç Adımla Gidecek], varsayılan adım sayısı 1'dir.
a = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
b = a[1:3] # Not: son index dahil edilmeyecektir.
print(b)
b = a[2:] # 2. indexten Tuple'ın son değerine kadar kadar
print(b)
b = a[:3] # Başlangıçtan itibaren 3. indexe kadar
print(b)
b = a[::2] # Başlangıçtan sona kadar 2'şer adımla
print(b)
b = a[::-1] # Tuple'ı tersine diz
print(b)

Dictionaries​


Dictionary (sözlük veri tipi) sıralı olmayan ve değiştirilebilirdir. Dictionary’ler, key / value çiftlerinden oluşan bir koleksiyondan oluşur. Her key / value çifti, key değerini ilişkili değeriyle eşler. Dictionary’ler süslü parantez içinde yazılır. Her key, değerinden iki nokta üst üste :)) ile ayrılır.

Dictionary Oluşturalım​


Kod:
my_dict = {"name":"Suleyman", "age":15, "city":"Aksaray"}
print(my_dict)

# Dictionary'leri kaydetmenin alternatif bir yolu da budur:
my_dict_2 = dict(name="Suleyman", age=15, city="Aksaray")
print(my_dict_2)

Key/Value Değerlerine Erişelim​


Kod:
mevcut_isim = my_dict["name"]
print(name_in_dict) # 'Suleyman' çıktısını verecektir.

Veri Ekleme / Değiştirme​


Kod:
# Yeni bir değer ekleyelim
my_dict["email"] = "[email protected]"
print(my_dict)

# Yada varolan bir değeri değiştirelim
my_dict["email"] = "[email protected]"
print(my_dict)

Verileri Silme​


Kod:
# Key / Value ikilisi Silme
del my_dict["email"]

# pop() fonksiyonunu da silmek için kullanabiliriz
print("popped value:", my_dict.pop("age"))

# son eklenen key/value ikilisini ekrana yazdırır ve siler.
print("popped item:", my_dict.popitem())

print(my_dict)

# clear() : tüm key/value ilişkilerini siler
# my_dict.clear()

Dict İçinde Key / Value Verilerini öğrenme​


Kod:
# Key - Value birlikte çıktı alma
for key in my_dict:
    print(key, my_dict[key])
# Sadece key'ler
for key in my_dict.keys():
    print(key)
# Sadece value'lar
for value in my_dict.values():
    print(value)
# Key - Value birlikte çıktı alma
for key, value in my_dict.items():
    print(key, value)

Dictionary’leri Birleştirme (Merging)​


Kod:
# 2 dictionary'yi birleştirm
# güncellenen değer varsa üstüne yazılır, yoksa eklenir
my_dict = {"name":"Max", "age":28, "email":"[email protected]"}
my_dict_2 = dict(name="Lisa", age=27, city="Boston")

my_dict.update(my_dict_2)
print(my_dict)

Kullanılabilir Key Türleri​


String’ler veya sayılar gibi immutable herhangi bir tür key olarak kullanılabilir.

Kod:
# Sayıları key olarak kullanırken dikkatli olun
my_dict = {3: 9, 6: 36, 9:81}
# Key'leri bir listenin indexleri olarak karıştırmayın, örneğin my_dict[0]'yu kullanmak burada mümkün değildir.
print(my_dict[3], my_dict[6], my_dict[9])

# immutable öğeler içeren Tuple'lar kullanılabilir
my_tuple = (8, 7)
my_dict = {my_tuple: 15}

print(my_dict[my_tuple])
# print(my_dict[8, 7])

# Liste kullanmak mümkün değildir çünkü liste veri tipi immutable değildir.
# Bu bir hataya neden olacaktır:
# my_list = [8, 7]
# my_dict = {my_list: 15}

İç İçe Geçmiş Dictionary’ler​


Kod:
my_dict_1 = {"name": "Suleyman", "age": 15}
my_dict_2 = {"name": "Kaya", "age": 25}
nested_dict = {"dictA": my_dict_1,
               "dictB": my_dict_2}
print(nested_dict)

Çıktısı bu şekilde olacaktır:

{'dictA': {'name': 'Suleyman', 'age': 15}, 'dictB': {'name': 'Kaya', 'age': 25}}

Sets​


Set veri tipi; unindexed, mutable (değiştirilebilir), ve unordered bir veri türüdür. Kendi içinde duplicate’lere izin vermez. Setler, süslü parantezlerle oluşturulur.

Set Oluşturma​


Kod:
my_set = {"seftali", "cilek", "elma"}
print(my_set)

# bunun yerine set() fonksiyonunu kullanrak bir set oluşturun
my_set_2 = set(["bir", "iki", "uc"])
my_set_2 = set(("bir", "iki", "uc"))
print(my_set_2)

my_set_3 = set("aaabbbcccdddeeeeeffff")
print(my_set_3)

# Dikkat: bos bir set {} ile oluşturulamaz, {} kullanıp boş bıraktığınız zaman Python bunu dict olarak yorumlayacaktır.
# bunun yerine boş bir set oluşturmak için set() fonksiyonunu kullanın.
a = {}
print(type(a))
a = set()
print(type(a))

Sete Veri Ekleme​


Kod:
my_set = set()

# add() fonksiyonunu kullanarak veri ekleme
my_set.add(42)
my_set.add(True)
my_set.add("Merhaba")

# Not: eklerken kullandığınız sıra önemli değildir ve yazdırıldığında farklılık gösterebilir.
print(my_set)

# Zaten varolan bir veriyi eklediğinizde sette hiçbir şey değişmeyecektir.
my_set.add(42)
print(my_set)

Setten Veri Silme​


Kod:
# remove(x): x'i siler, eğer x setin içinde yoksa KeyError hatası döndürür.
my_set = {"seftali", "cilek", "elma"}
my_set.remove("elma")
print(my_set)

# KeyError:
# my_set.remove("portakal")

# discard(x): x'i siler, x yoksa ekstra birşey yapmaz
my_set.discard("visne")
my_set.discard("palamut")
print(my_set)

# clear() : setin icindeki tum verileri siler
my_set.clear()
print(my_set)

# pop() : rastgele bir eleman seçer, siler ve setin son halini ekranda döndürür.
a = {True, 2, False, "hi", "hello"}
print(a.pop())
print(a)

Setin İçinde Veri Tespiti​


Kod:
my_set = {"seftali", "cilek", "elma"}
if "seftali" in my_set:
    print("setin icinde seftali var")

Setin İçindeki Verileri Bulma​


Kod:
my_set = {"seftali", "cilek", "elma"}
for i in my_set:
    print(i)

Setleri Birleştirme​


Kod:
tek = {1, 3, 5, 7, 9}
cift = {0, 2, 4, 6, 8}
asal = {2, 3, 5, 7}

# union() : her iki setteki verileri duplicate olmaksızın birleştirir
# bu işlem iki seti de değiştirmez.
u = tek.union(asallar)
print(u)

# intersection(): her iki sette de ortak bulunan öğeleri al
i = tek.intersection(cift)
print(i)

i = tek.intersection(asal)
print(i)

i = cift.intersection(asal)
print(i)

Setlerde Farklılıkları Bulma​


Kod:
setA = {1, 2, 3, 4, 5, 6, 7, 8, 9}
setB = {1, 2, 3, 10, 11, 12}

# difference() : setA'da olup setB'de olmayanları döndürür.
print(diff_set)

# A.difference(B) ile B.difference(A) aynı olmayacaktır.
diff_set = setB.difference(setA)
print(diff_set)

# symmetric_difference() : setA ve setB'de ortak olmayanları döndürür.
diff_set = setA.symmetric_difference(setB)
print(diff_set)

# A.symmetric_difference(B) = B.symmetric_difference(A)
diff_set = setB.symmetric_difference(setA)
print(diff_set)

Setleri Güncelleme​


Kod:
setA = {1, 2, 3, 4, 5, 6, 7, 8, 9}
setB = {1, 2, 3, 10, 11, 12}

# update() : Başka bir setten element ekleyerek günceller.
setA.update(setB)
print(setA)

# intersection_update() : Sadece ortak elementleri tutacak şekilde seti günceller.
setA = {1, 2, 3, 4, 5, 6, 7, 8, 9}
setA.intersection_update(setB)
print(setA)

# difference_update() : Başka bir sette bulunan tüm elemanları varolan setin içinden silerek günceller.
setA = {1, 2, 3, 4, 5, 6, 7, 8, 9}
setA.difference_update(setB)
print(setA)

# symmetric_difference_update() : Bir sette olup diğer sette olmayan verileri tutarak günceler.
setA = {1, 2, 3, 4, 5, 6, 7, 8, 9}
setA.symmetric_difference_update(setB)
print(setA)

Set Kopyalama​


Kod:
set_org = {1, 2, 3, 4, 5}

# Bu kopyalamaz, sadece ismini referans olarak kullanır
set_copy = set_org

# bu referans kopyasındaki değişiklikler orijinal seti de etkiler.
set_copy.update([3, 4, 5, 6, 7])
print(set_copy)
print(set_org)

# tam bağımsız bir kopya oluşturmak için copy() fonksiyonunu kullanın
set_org = {1, 2, 3, 4, 5}
set_copy = set_org.copy()

# Şimdi ise bu kopyada yaptığımız değişiklikler orijinali etkilemez.
set_copy.update([3, 4, 5, 6, 7])
print(set_copy)
print(set_org)

Şimdilik bu kadar, bir sonraki yazımda görüşmek üzere
🙂
 
Moderatör tarafında düzenlendi:
Geri
Üst