Anasayfa / python / Python da listeler

Python da listeler

Python da Listeler

Pythonda listelerde veri elemanları saklandığı gibi veri öğeleri de saklanabilmektedir.
Diğer programlama dillerindede diziler vardır bunlar python listelerine benzer fakat aynı değildir!
Diziler sabit boyuttadır ve öğelerinin her birinde aynı veri türüne sahiptir.
Python’da listeler büyüyebilir ve küçülebilir.
Python’da bir listenin öğeleri farklı türleri saklayabilir. Diğer pekçok dilde bu mümkün değildir

Python’da listeler çeşitli biçimlerde yaratılabilirler en çok kullanılan yöntem köşeli parantez operatörünü kullanmaktır.

liste elemanları aralarına “,” atomu yerleştirilerek oluşturulur. Örneğin:

prime_list = [2,3,5,7]
print(type(prime_list))

Python örnek liste görseli

 

 

 

 

Resimde görüldüğü gibi listenin ilk elemanı 0. indisten başlıyor

prime_list[0]  -> 2 değerini gösteriyor (dikkat değeri burada tutmuyor gösteriyor)

prime_list yerleşimi

 

prime_list = [2,3,5,7]
print(prime_list[0])
print(prime_list[1])
print(prime_list[2])
print(prime_list[3])

2
3
5
7
>>>

python‘da her şey nesnedir biz liste oluştururken kullandığımız 2, 3, 5, 7 değerleri aslında her biri farklı bir nesne biz prime_list[0] da o nesnenin adresini tutmuş oluyoruz.

resim ile ifade edelim

python da listelerin elamanları nesnelerin adresini gösterirGörseli biraz kod ile açıklayalım

>>> w = 2
>>> x = 3
>>> y = 5
>>> z = 7
>>> print(' w ptr:',id(w),'\n','x ptr:',id(x),'\n','y ptr:',id(y),'\n','z ptr:',id(z),'\n')
 w ptr: 140718203589696 
 x ptr: 140718203589728 
 y ptr: 140718203589792 
 z ptr: 140718203589856 

şimdi prime_list listesini oluşturalım

>>> prime_list = [2, 3, 5, 7]

şimdi de prime_list listesinin öğelerinin pointer’larına bakalım

>>> print(id(prime_list[0]),id(prime_list[1]),id(prime_list[2]),id(prime_list[3]))
140718203589696 140718203589728 140718203589792 140718203589856

140718203589696 adresi hem w değişkeni için hemde prime_list[0] için aynı

 

örnek idle da yazılmış bir kod parçacığı

 

python burada hafızadan tasaruf etmek için w = 2 ifadesinin karşılığı olarak 2 değerine sahip bir nesne oluşturup o nesnenin adresini w değişkeninde tutuyor daha sonra yeniden bu değeri kullanan bir nesne oluştumak istendiğinde yeniden hafızada bu değeri tutmayıp istenen yere o değerin adresini verir taki o nesneyi gösteren herhangi bir referans kalmayana dek
daha detaylı bilgi için https://rushter.com/blog/python-garbage-collector/

 

prime_list listesi listelerpython’ da liste elemanları farklı türden yani hetorojen olabilir.

örneğin:

my_list = [1, 'ahmet', 17.55, (3,5), [1, 3, 5, 7, 9]]

listenin ilk elamanının gösterdiği yer bir int nesnesi iken ikinci elamanının gösterdiği nesne bir string str nesnesini göstermektedir

listeler örnek my_list hetorojen yapıda

 

bir listenin eleman sayısı python da built-in gelen len fonksiyonu ile elde edilebilir.

len(my_list)
5

listenin elemanlarını köşeli parantez operatörü ile erişebiliriz listenin ilk elemanı 0’ıncı indekstedir

köşeli parantez operatörünün içerisine int türden bir ifade gelmesi gerekmektedir bu durumda öncelikle o ifadenin değeri hesaplanır sonra o listenin o indeksli elamanına erişilir

i = 3
x  = 1
my_list[i + x]

listenin bir elemanına erişir iken tam sayı olmayan (int türden olmayan) bir ifade kullanamayız kullandığımız durumda

örnek

my_list[3.4]

“TypeError: list indices must be integers or slices, not float” exception oluşur.

Python range fonksiyonu ile bir liste oluşturalım öncelikle range fonksiyonuna bakalım

range(start, stop, [step])
range(0, 10, 1) -> 0,1,2,3,4,5,6,7,8,9
range(0, 10, 2) -> 0,2,4,6,8


list_a = list(range(0, 10, 2))
list_a -> [0, 2, 4, 6, 8]

python’da stringler iterable (dolaşılabilir) nesnelerdir list sınıfının constructor ‘ına bir string verildiğinde ifadenin her bir elemanı listenin bir öğesi olacak şekilde liste nesnesinde gösterilir örnek

list_s = list('ali)
list_s - > ['a','l','i']

şimdi de liste oluşturmanın alternatif syntax’larına bakalım

list_a = []
list_a = list()
list_b = [1, 3, 5, 7, 9]
list_b = list([1, 3, 5, 7, 9])
list_c = ['ali','veli','mehmet']
list_c = list(['ali','veli','mehmet'])

şimdide liste veri yapısında swap işlemini yapalım

prime_list = [2, 3, 5, 7, 11]
print('Swap öncesi ', prime_list)
temp = prime_list[0]
prime_list[0] = prime_list[4]
prime_list[4] = temp
print('Swap sonrası', prime_list)

Swap öncesi   [2, 3, 5, 7, 11]
Swap sonrası  [11, 3, 5, 7, 2]

peki temp bir değişken kullanmadan bunu yapabilir miyiz?
python idiomatic bir dil ve bunu yapmamıza imkan sağlayan bir syntaxa sahip

prime_list = [2, 3, 5, 7, 11]
print('Swap öncesi ', prime_list)
prime_list[0] , prime_list[4] =  prime_list[4], prime_list[0]
print('Swap sonrası', prime_list)

python da diğer dillerde olduğu gibi fixed size array oluşturamıyoruz ama 10 eleman lı her elemanı 0 (int) değerine sahip bir liste oluşturabiliriz.
örnek:

my_list = [0] * 10

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

 

 

Hakkında ibrahim

İlgili Makaleler

Flask-migrate and changing column type

migrate etiğinizde değiştirmiş olduğunuz tüm değişiklikleri algılamıyorsa (varchar(30) dan varchar(100) e gibi) migrate = Migrate(app, …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir