Comment on page
🚧
Veri Yapılarında İşlemler
Python üzerinde veri yapıları işlemleri
Tip | Açıklama | Örnek |
---|---|---|
liste = [1, 2] | liste[index] | |
kume = {1.0, "Hello", (1, 2, 3)} | kume.add(1) | |
site = {"adi":"yemreak"} | site['adi'] | |
konum = (1, 2) | x, y = konum |
- Birden fazla list yada benzeri yapıları birleştirmek için kullanılır.
key = ['name', 'age', 'height', 'weight', 'hair', 'eyes', 'has dog']
value = ['Dylan', 28, 167.5, 56.5, 'brown', 'brown', True]
zipped = zip(key_list, value_list) # <zip object at 0x7f2ae4e91508>
list(zipped) # [('name', 'Dylan'), ('age', 28), ('height', 167.5), ('weight', 56.5), ('hair', 'brown'), ('eyes', 'brown'), ('has dog', True)]
dict(zipped) # {'name': 'Dylan', 'age': 28, 'height': 167.5, 'weight': 56.5, 'hair': 'brown', 'eyes': 'brown', 'has dog': True}
# Zip işlemini geri alma
key_list, value_list = zip(*zipped)
example_list = ['a', 'b', 23, 10, True, 'a', 10]
example_tuple = tuple(example_list)
example_set = set(example_tuple)
example_list = list(example_set)
print(example_tuple)
print(example_set)
print(example_list) # Set yapısından dolay tekrarlı verileri kaybederiz
# ('a', 'b', 23, 10, True, 'a', 10)
# {True, 10, 'a', 23, 'b'}
# [True, 10, 'a', 23, 'b']
- Arama işlemlerinin temeli
in
ile yapılmaktadır. - Tekrarlama işlemleri
for <key> in <yapı>:
ile yapılmaktadır
if 'has dog' in me_dict:
pass
Arama işlemi
KeyError
(tanımsız değişkenler ile işlem yapma) sorunu ortadan kaldırır.Sırala işlemleri
sorted
metodu ile yapılmaktadır.- Eğer yapıda farklı elemanlar var ise
map(<type>, <yapı>)
ilesorted
fonksiyonu kullanılır - Eğer
dict
verilerinde anahtar-veri (key-value) olarak sıralamak istersekdict.items()
yapısı kullanılır
print(sorted(map(str, example_tuple)))
print(sorted(map(str, example_set)))
print(sorted(me_dict.items())) # Key-Value değerlerini
print(sorted(me_dict)) # Sadece değerleri sıralar
sort(list) # sadece sıralar veri döndürmez
Kopyalama işlemleri için shallow copy ya da deep copy seçenekleri mevcuttur.
💁♂️ Özetle objelerin birbirinden bağımsız olmasını istiyorsanız, deep copy kullanın
🌫️ Shallow Copy | 🕳 Deep Copy |
---|---|
Referans kopyalar | Değer kopyalar |
Obje yeniden oluşturulur | Obje yeniden oluşturulur |
Objenin her bir referansı kopyalanır ve yeniye aktarılır | Objenin her bir değeri tek tek kopyalanır ve yeniye aktarılır |
Kopyalanan objenin referansı alındığından orijinal ile bağlantılıdır | Her bilgi tek tek kopyalandığından orijinal ile bağlantısı yoktur |
Herhangi bir değişiklik diğerini de etkiler | Herhangi bir değişiklik diğerini etkilemez |
import copy
li1 = [1, 2, [3,5], 4]
# Shallow copy
li2 = copy.copy(li1)
# Deep copy
li3 = copy.deepcopy(li1)
# Slice ile deep copy
li4 = li1[:]
📢 Objenin kopyalama davranışlarını değiştirmek için
__copy__
, __deepcopy__
metotları override edilirbağlantılarına bakabilirsin.
Tek satır ile yapı oluşturmadır.
- 🤯 Daha anlaşılır
- 💨 Daha hızlı
squares = [x**2 for x in range(10)] # Liste tanımlama
square_lut = {x: x**2 for x in range(10)} # Dict tanımlama
squares = []
square_lut = {}
for x in range(10):
squares.append(x**2)
square_lut[x] = x**2
me_dict_dtypes = {k: type(v) for k, v in me_dict.items()}
print(me_dict_dtypes)
# {'name': <class 'str'>, 'age': <class 'int'>, 'height': <class 'float'>, 'weight': <class 'float'>, 'hair': <class 'str'>, 'eyes': <class 'str'>, 'has dog': <class 'bool'>, 'favorite color': <class 'str'>, 'nieces/nephews': <class 'int'>}
Last modified 1mo ago