Nesneye Yönelik Python - Veri Yapıları
Python veri yapıları sözdizimi açısından oldukça sezgiseldir ve geniş bir işlem seçeneği sunarlar. Verinin neyi içerdiğine, değiştirilmesi gerekip gerekmediğine veya sabit bir veri olup olmadığına ve başlangıç / bitiş / rastgele gibi hangi erişim türünün gerekli olduğuna bağlı olarak Python veri yapısını seçmeniz gerekir.
Listeler
Liste, Python'daki en çok yönlü veri yapısı türünü temsil eder. Liste, köşeli parantezler arasında virgülle ayrılmış değerler (öğeler veya öğeler) tutan bir kaptır. Birden çok ilgili değerle çalışmak istediğimizde listeler faydalıdır. Listeler verileri bir arada tuttuğundan, aynı yöntem ve işlemleri aynı anda birden çok değer üzerinde gerçekleştirebiliriz. Dizin listeleri sıfırdan başlar ve dizelerden farklı olarak listeler değiştirilebilir.
Veri Yapısı - Liste
>>>
>>> # Any Empty List
>>> empty_list = []
>>>
>>> # A list of String
>>> str_list = ['Life', 'Is', 'Beautiful']
>>> # A list of Integers
>>> int_list = [1, 4, 5, 9, 18]
>>>
>>> #Mixed items list
>>> mixed_list = ['This', 9, 'is', 18, 45.9, 'a', 54, 'mixed', 99, 'list']
>>> # To print the list
>>>
>>> print(empty_list)
[]
>>> print(str_list)
['Life', 'Is', 'Beautiful']
>>> print(type(str_list))
<class 'list'>
>>> print(int_list)
[1, 4, 5, 9, 18]
>>> print(mixed_list)
['This', 9, 'is', 18, 45.9, 'a', 54, 'mixed', 99, 'list']
Python Listesindeki Öğelere Erişim
Bir listenin her öğesine bir numara atanır - bu, o numaranın dizini veya konumudur. Dizin oluşturma her zaman sıfırdan başlar, ikinci dizin birdir ve bu böyle devam eder. Bir listedeki öğelere erişmek için, bu dizin numaralarını bir köşeli parantez içinde kullanabiliriz. Örneğin aşağıdaki kodu inceleyin -
>>> mixed_list = ['This', 9, 'is', 18, 45.9, 'a', 54, 'mixed', 99, 'list']
>>>
>>> # To access the First Item of the list
>>> mixed_list[0]
'This'
>>> # To access the 4th item
>>> mixed_list[3]
18
>>> # To access the last item of the list
>>> mixed_list[-1]
'list'
Boş Nesneler
Boş Nesneler, en basit ve en temel Python yerleşik türleridir. Bunları fark etmeden defalarca kullandık ve yarattığımız her sınıfa genişlettik. Boş bir sınıf yazmanın temel amacı, bir şeyi şimdilik bloke etmek ve daha sonra ona bir davranış eklemek ve genişletmektir.
Bir sınıfa davranış eklemek, bir veri yapısını bir nesneyle değiştirmek ve ona yönelik tüm başvuruları değiştirmek anlamına gelir. Bu nedenle, herhangi bir şey oluşturmadan önce, verilerin gizli bir nesne olup olmadığını kontrol etmek önemlidir. Daha iyi anlamak için aşağıdaki kodu inceleyin:
>>> #Empty objects
>>>
>>> obj = object()
>>> obj.x = 9
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
obj.x = 9
AttributeError: 'object' object has no attribute 'x'
Dolayısıyla yukarıdan, doğrudan somutlaştırılmış bir nesneye herhangi bir nitelik atamanın mümkün olmadığını görebiliriz. Python, bir nesnenin rastgele özniteliklere sahip olmasına izin verdiğinde, hem öznitelik adını hem de değerini depolamak için her nesnenin hangi özniteliklere sahip olduğunu takip etmek için belirli bir miktarda sistem belleği gerekir. Hiçbir öznitelik saklanmasa bile, potansiyel yeni öznitelikler için belirli bir miktarda bellek ayrılır.
Bu nedenle Python, varsayılan olarak nesnede ve diğer bazı yerleşiklerde rastgele özellikleri devre dışı bırakır.
>>> # Empty Objects
>>>
>>> class EmpObject:
pass
>>> obj = EmpObject()
>>> obj.x = 'Hello, World!'
>>> obj.x
'Hello, World!'
Dolayısıyla, özellikleri birlikte gruplamak istersek, bunları yukarıdaki kodda gösterildiği gibi boş bir nesnede saklayabiliriz. Ancak bu yöntem her zaman önerilmemektedir. Sınıfların ve nesnelerin yalnızca hem verileri hem de davranışları belirtmek istediğinizde kullanılması gerektiğini unutmayın.
Tuples
Tuples, listelere benzer ve öğeleri depolayabilir. Ancak, bunlar değişmezdir, bu nedenle nesneleri ekleyemeyiz, çıkaramayız veya değiştiremeyiz. Demetin değişmezliği nedeniyle sağladığı başlıca faydalar, bunları sözlüklerde veya bir nesnenin karma değer gerektirdiği diğer yerlerde anahtar olarak kullanabilmemizdir.
Tuplelar veri depolamak için kullanılır, davranış değil. Bir demeti işlemek için davranışa ihtiyaç duymanız durumunda, demeti, eylemi gerçekleştiren bir işleve (veya başka bir nesnedeki yönteme) aktarmanız gerekir.
Tuple bir sözlük anahtarı görevi görebileceğinden, depolanan değerler birbirinden farklıdır. Değerleri virgülle ayırarak bir demet oluşturabiliriz. Başlıklar parantez içine alınır ancak zorunlu değildir. Aşağıdaki kod, iki özdeş atamayı gösterir.
>>> stock1 = 'MSFT', 95.00, 97.45, 92.45
>>> stock2 = ('MSFT', 95.00, 97.45, 92.45)
>>> type (stock1)
<class 'tuple'>
>>> type(stock2)
<class 'tuple'>
>>> stock1 == stock2
True
>>>
Bir Tuple Tanımlama
Tuples, listeye çok benzer, tek fark, tüm öğeler kümesinin köşeli parantezler yerine parantez içine alınmasıdır.
Tıpkı bir listeyi dilimlediğinizde olduğu gibi, yeni bir liste alırsınız ve bir demeti dilimlediğinizde, yeni bir demet alırsınız.
>>> tupl = ('Tuple','is', 'an','IMMUTABLE', 'list')
>>> tupl
('Tuple', 'is', 'an', 'IMMUTABLE', 'list')
>>> tupl[0]
'Tuple'
>>> tupl[-1]
'list'
>>> tupl[1:3]
('is', 'an')
Python Tuple Yöntemleri
Aşağıdaki kod, Python tuples'daki yöntemleri gösterir -
>>> tupl
('Tuple', 'is', 'an', 'IMMUTABLE', 'list')
>>> tupl.append('new')
Traceback (most recent call last):
File "<pyshell#148>", line 1, in <module>
tupl.append('new')
AttributeError: 'tuple' object has no attribute 'append'
>>> tupl.remove('is')
Traceback (most recent call last):
File "<pyshell#149>", line 1, in <module>
tupl.remove('is')
AttributeError: 'tuple' object has no attribute 'remove'
>>> tupl.index('list')
4
>>> tupl.index('new')
Traceback (most recent call last):
File "<pyshell#151>", line 1, in <module>
tupl.index('new')
ValueError: tuple.index(x): x not in tuple
>>> "is" in tupl
True
>>> tupl.count('is')
1
Yukarıda gösterilen koddan, tupleların değişmez olduğunu ve dolayısıyla -
Sen cannot demete öğeler ekleyin.
Sen cannot bir yöntem ekleyin veya genişletin.
Sen cannot bir demetten öğeleri kaldırın.
Tuples var no kaldır veya pop yöntemi.
Sayma ve indeks, bir demette bulunan yöntemlerdir.
Sözlük
Sözlük, Python'un yerleşik veri türlerinden biridir ve anahtarlar ile değerler arasındaki bire bir ilişkileri tanımlar.
Sözlük Tanımlama
Sözlük tanımlamayı anlamak için aşağıdaki kodu gözlemleyin -
>>> # empty dictionary
>>> my_dict = {}
>>>
>>> # dictionary with integer keys
>>> my_dict = { 1:'msft', 2: 'IT'}
>>>
>>> # dictionary with mixed keys
>>> my_dict = {'name': 'Aarav', 1: [ 2, 4, 10]}
>>>
>>> # using built-in function dict()
>>> my_dict = dict({1:'msft', 2:'IT'})
>>>
>>> # From sequence having each item as a pair
>>> my_dict = dict([(1,'msft'), (2,'IT')])
>>>
>>> # Accessing elements of a dictionary
>>> my_dict[1]
'msft'
>>> my_dict[2]
'IT'
>>> my_dict['IT']
Traceback (most recent call last):
File "<pyshell#177>", line 1, in <module>
my_dict['IT']
KeyError: 'IT'
>>>
Yukarıdaki koddan şunu gözlemleyebiliriz:
Önce iki öğeli bir sözlük oluşturup bunu değişkene atıyoruz my_dict. Her öğe bir anahtar / değer çiftidir ve tüm öğeler küme parantezi içine alınır.
Numara 1 anahtar ve msftdeğeridir. Benzer şekilde,2 anahtar ve IT değeridir.
Değerleri anahtara göre alabilirsiniz, ancak tersi olamaz. Böylece denediğimizdemy_dict[‘IT’] , bir istisna yaratır çünkü IT anahtar değildir.
Sözlükleri Değiştirme
Bir sözlüğü değiştirmeyi anlamak için aşağıdaki kodu inceleyin -
>>> # Modifying a Dictionary
>>>
>>> my_dict
{1: 'msft', 2: 'IT'}
>>> my_dict[2] = 'Software'
>>> my_dict
{1: 'msft', 2: 'Software'}
>>>
>>> my_dict[3] = 'Microsoft Technologies'
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies'}
Yukarıdaki koddan şunu gözlemleyebiliriz -
Bir sözlükte yinelenen anahtarlara sahip olamazsınız. Mevcut bir anahtarın değerini değiştirmek eski değeri siler.
İstediğiniz zaman yeni anahtar / değer çiftleri ekleyebilirsiniz.
Sözlüklerin öğeler arasında düzen kavramı yoktur. Basit sırasız koleksiyonlardır.
Bir Sözlükte Veri Türlerini Karıştırma
Bir sözlükteki veri türlerini karıştırmayı anlamak için aşağıdaki kodu gözlemleyin -
>>> # Mixing Data Types in a Dictionary
>>>
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies'}
>>> my_dict[4] = 'Operating System'
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System'}
>>> my_dict['Bill Gates'] = 'Owner'
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System',
'Bill Gates': 'Owner'}
Yukarıdaki koddan şunu gözlemleyebiliriz -
Yalnızca dizeler değil, sözlük değeri dizeler, tamsayılar ve sözlüğün kendisi dahil herhangi bir veri türünde olabilir.
Sözlük değerlerinden farklı olarak, sözlük anahtarları daha sınırlıdır, ancak dizeler, tam sayılar veya diğerleri gibi herhangi bir türde olabilir.
Sözlüklerden Öğeleri Silme
Bir sözlükten öğeleri silmeyi anlamak için aşağıdaki kodu inceleyin -
>>> # Deleting Items from a Dictionary
>>>
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System',
'Bill Gates': 'Owner'}
>>>
>>> del my_dict['Bill Gates']
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System'}
>>>
>>> my_dict.clear()
>>> my_dict
{}
Yukarıdaki koddan şunu gözlemleyebiliriz -
del - bir sözlükten tek tek öğeleri anahtarla silmenizi sağlar.
clear - bir sözlükteki tüm öğeleri siler.
Setleri
Set (), yinelenen öğeler içermeyen sırasız bir koleksiyondur. Tek tek öğeler değişmez olsa da, setin kendisi değiştirilebilir, yani sete öğeler / öğeler ekleyebilir veya kaldırabiliriz. Set ile birleşim, kesişim vb. Matematiksel işlemleri gerçekleştirebiliriz.
Kümeler genel olarak ağaçlar kullanılarak gerçekleştirilebilir, ancak Python'da küme bir karma tablo kullanılarak uygulanabilir. Bu, sette belirli bir öğenin bulunup bulunmadığını kontrol etmek için oldukça optimize edilmiş bir yöntem sağlar.
Bir set oluşturmak
Tüm öğeler (öğeler) küme parantezlerinin içine yerleştirilerek bir küme oluşturulur {}virgülle ayrılmış veya yerleşik işlevi kullanarak set(). Aşağıdaki kod satırlarını inceleyin -
>>> #set of integers
>>> my_set = {1,2,4,8}
>>> print(my_set)
{8, 1, 2, 4}
>>>
>>> #set of mixed datatypes
>>> my_set = {1.0, "Hello World!", (2, 4, 6)}
>>> print(my_set)
{1.0, (2, 4, 6), 'Hello World!'}
>>>
Kümeler için Yöntemler
Kümeler için yöntemleri anlamak için aşağıdaki kodu gözlemleyin -
>>> >>> #METHODS FOR SETS
>>>
>>> #add(x) Method
>>> topics = {'Python', 'Java', 'C#'}
>>> topics.add('C++')
>>> topics
{'C#', 'C++', 'Java', 'Python'}
>>>
>>> #union(s) Method, returns a union of two set.
>>> topics
{'C#', 'C++', 'Java', 'Python'}
>>> team = {'Developer', 'Content Writer', 'Editor','Tester'}
>>> group = topics.union(team)
>>> group
{'Tester', 'C#', 'Python', 'Editor', 'Developer', 'C++', 'Java', 'Content
Writer'}
>>> # intersets(s) method, returns an intersection of two sets
>>> inters = topics.intersection(team)
>>> inters
set()
>>>
>>> # difference(s) Method, returns a set containing all the elements of
invoking set but not of the second set.
>>>
>>> safe = topics.difference(team)
>>> safe
{'Python', 'C++', 'Java', 'C#'}
>>>
>>> diff = topics.difference(group)
>>> diff
set()
>>> #clear() Method, Empties the whole set.
>>> group.clear()
>>> group
set()
>>>
Setler için Operatörler
Kümeler için işleçler hakkında bilgi edinmek için aşağıdaki kodu inceleyin -
>>> # PYTHON SET OPERATIONS
>>>
>>> #Creating two sets
>>> set1 = set()
>>> set2 = set()
>>>
>>> # Adding elements to set
>>> for i in range(1,5):
set1.add(i)
>>> for j in range(4,9):
set2.add(j)
>>> set1
{1, 2, 3, 4}
>>> set2
{4, 5, 6, 7, 8}
>>>
>>> #Union of set1 and set2
>>> set3 = set1 | set2 # same as set1.union(set2)
>>> print('Union of set1 & set2: set3 = ', set3)
Union of set1 & set2: set3 = {1, 2, 3, 4, 5, 6, 7, 8}
>>>
>>> #Intersection of set1 & set2
>>> set4 = set1 & set2 # same as set1.intersection(set2)
>>> print('Intersection of set1 and set2: set4 = ', set4)
Intersection of set1 and set2: set4 = {4}
>>>
>>> # Checking relation between set3 and set4
>>> if set3 > set4: # set3.issuperset(set4)
print('Set3 is superset of set4')
elif set3 < set4: #set3.issubset(set4)
print('Set3 is subset of set4')
else: #set3 == set4
print('Set 3 is same as set4')
Set3 is superset of set4
>>>
>>> # Difference between set3 and set4
>>> set5 = set3 - set4
>>> print('Elements in set3 and not in set4: set5 = ', set5)
Elements in set3 and not in set4: set5 = {1, 2, 3, 5, 6, 7, 8}
>>>
>>> # Check if set4 and set5 are disjoint sets
>>> if set4.isdisjoint(set5):
print('Set4 and set5 have nothing in common\n')
Set4 and set5 have nothing in common
>>> # Removing all the values of set5
>>> set5.clear()
>>> set5 set()