SlideShare a Scribd company logo
1 of 11
Download to read offline
Python ile Veri Yapıları 
Listeler 
Selçuk Bozdağ 
selcuk.bozdag@gmail.com 
8 Aralık 2014 
Python ile Veri Yapıları Listeler Selçuk Bozdağ
Giriş 
Python harika bir programlama dili. Bu dili öğrenmek isteyenler, aslında günlük hayatlarında 
karşılaştıkları bir problemi "pratik ve çevik" bir biçimde sonuç alarak çözmek isteyen 
geliştiricilerdir. Gerçekten de bir sistem yöneticisi, bilimsel hesaplamalarla uğraşan bir 
araştırmacı ya da bir oyun geliştiricisi, Python dilini son derece kullanışlı ve sonuca hızlı, kararlı ve 
doğru götürdüğünü farketmişlerdir. 
Bu öğretici derste de bilgisayar bilimlerinde kullanılan temel veri yapılarının Python ile pratik ve 
etkili biçimde nasıl ele alındığı anlatılmıştır. Listeler, sözlükler, sekanslar, sabit listeler ve diğer 
temel yapılar örneklerle açıklanmıştır. 
Veri ve Modelleme 
Veri Yapısı nedir, öncelike bu kavramı anlamaya çalışalım. Günlük hayattan bazı örnekler sunarak 
giriş yapalım. 
Düzenli insanların en beğenilen özelliklerinden birisi de mutlaka bir ajandaya sahip olmalarıdır. 
Bu ajanda bazen bir defter, bazen de bir akıllı telefon uygulaması olabilir. 
Önemli olan ne içerdiğidir. Her ajandada günlük olarak yapılacak işlerin bir listesi yer almaktadır. 
İlk anahtar sözcüğü fark etmiş olabilirsiniz: liste. 
Listeler, belirli bir sıralama gözetmeksizin ard arda eklenen verilerden oluşturulur. 
– Faturaları öde 
– Diş hekiminden randevu al 
– Ders özetlerini gözden geçir 
– Python öğrenmeye başla 
gibi uzayan bir "Yapılacaklar Listesi" bilgiyi organize etmenin bir yoludur. 
Python ile Veri Yapıları Listeler Selçuk Bozdağ
Bir başka organizasyon yöntemi ise telefon rehberlerinde yer alır. Her telefon numarasına karşılık 
gelen bir kişi vardır. 
– 110: Yangın 
– 154: Alo Trafik 
– 155: Polis İmdat 
– 135: Uyandırma Servisi Telefonu 
şeklinde bir sözlük oluşturabilirsiniz. Buradaki "sözlük" kelimesi, ikinci anahtar 
kelimemizdir. Verileri bir "anahtar" ve "değer" ikilisiyle listeliyoruz. 
Yukarıdaki iki örneği birleştirmek istersek, yapılacaklar listesinde, tarihleri anahtar olarak 
kabul edebiliriz. 
– 10.01.2015: 
– Faturaları öde 
– Diş hekiminden randevu al 
– Ders Özetlerini gözden geçir 
– Python öğrenmeye başla 
– 11.01.2015: 
– Sinemaya git 
– Mutfak alışverişi yap 
– Maketi tamamla 
Bilgisayar bilimlerinde veri organizasyonu, amacınızı gerçekleştirmek ve algoritmalarınızı 
beslemek için doğrudan etkisi olan öbekler anlamına geliyor. 
Python ile Veri Yapıları Listeler Selçuk Bozdağ
Yukarıdaki örneklerde de gördüğünüz gibi üzerinde algoritmalarınızı uygulayabileceğiniz 
zengin veri yapıları sayesinde programlarımızı oluşturabiliyoruz. Bu veri yapılarını birlikte 
kullanarak, karmaşıklığı artan problemlere daha verimli ve etkili çözümler üretebiliyoruz. 
İlerleyen alt bölümlerde Python programlama dilinde gerçekleştirilen veri yapılarını ve 
kullanımlarını inceleyeceğiz. 
Listeler 
Liste, belki de en çok kullanılan veri yapısıdır. Değerler, birbiri ile virgülle ayrılarak köşeli 
parantezler içerisinde gruplanırlar ve böylece bir listeye sahip olursunuz. 
Aşağıdaki örneklerde bir takım listeler oluşturulmuştur. 
>>> asal_sayilar = [1, 2, 3, 5, 7, 11, 13] 
>>> yapilacaklar = [ 'Fatura Ode', 
'Dis hekiminden randevu al', 
'Ders Ozetlerini gozden gecir', 
'Python ogrenmeye basla' ] 
>>> harfler = ['p', 'y', 't', 'h', 'o', 'n'] 
Liste Elemanlarına Erişim 
Python, üzerinde sıralı biçimde gezinilebilecek bir türe sahiptir. Bu türün adı "sequence" 
olarak tanımlıdır. Türkçeye "sıra" olarak çevirilebilir. Adından da anlaşılabileceği gibi, eğer 
"sequence" türünden bir veri yapısına sahipseniz, iki davranışa ya da metoda 
sahipsinizdir. Her bir "sequence" türü __getitem()__ ve __len()__ metodlarını tanımlamak 
zorundadır*. 
O zaman ilk olarak, yukarıda tanımladığımız listelerin uzunluklarını öğrenelim. 
Python ile Veri Yapıları Listeler Selçuk Bozdağ
>>> len(asal_sayilar) 
7 
>>> len(yapilacaklar) 
4 
>>> len(harfler) 
6 
Boş bir liste için len() fonksiyonu 0 değerini üretecektir. 
>>> bos_liste = [] 
>>> len( bos_liste ) 
0 
Liste elemanlarına erişmek için "[ ]" operatörünü 
kullanabiliriz. 
İlk elemana erişirken operatöre değer olarak 0 
veririz. 0, değer olarak değil bir indeks olarak 
algılanmalıdır. "Sıfırıncı liste elemanı" demek 
aslında listedeki ilk eleman anlamına gelir. 
İndeks, Türk Dil Kurumu sözlüğünde 
"dizin" olarak tanımlanmış bir 
kelime. "Birşeye endekslenmek" 
olarak örnekler veriliyor. Sıfırın, ilk 
elemana indekslenmesi; birin ikinci 
elemana indekslenmesi diye devam 
edebiliriz. Aslında indeks, işaret 
etmektir. Verilen örnekleri dikkatlice 
incelemenizi ve denemenizi 
öneriyoruz. 
>>> asal_sayilar[0] 
1 
En son elemana erişmek için ise index değeri 
olarak "-1" kullanılabilir. Farklı yöntemler de vardır. Örneğin listenin uzunluğunun bir 
eksiği de bize en son elemanın indeksini verecektir. 
Python ile Veri Yapıları Listeler Selçuk Bozdağ
>>> asal_sayilar[-1] 
13 
>>> asal_sayilar[ len(asal_sayilar)-1 ] 
13 
Negatif indeks değerleri listenin sonundan itibaren erişimi sağlamaktadır. Örneğin "-1" 
indeksi "sondan birinci eleman" yani en son eleman anlamına gelmektedir. 
Python listelerinde, listenin belirli bir dilimini elde etmek de oldukça kolaydır ve son 
derece kullanışlıdır. Bunun için "[:]" operatörünü kullanırız. 
Bu dilimlerin her biri, İngilizcede "slice" olarak adlandırılır. Aşağıdaki ilk örneğinimizde 
"harfler" listesinin ikinci, üçüncü ve dördüncü elemanlarını bir liste olarak 
alıyoruz. 
>>> harfler[1:4] 
['y', 't', 'h'] 
Bu örnekte operatörümüze ilk parametre olarak başlangıç indeksini, ikinci parametre 
olarak da bitiş indeksini sağlıyoruz. Bitiş indeksinin dışlayan olduğuna dikkat edelim. 
Yani "4 numaralı indeks" değeri olan 'o' harfi, sonuç listesinde yer almamaktadır. 
Dilimleme yaparken operatöre başlangıç ve bitiş değerlerinden birini verebilir ya da 
hiçbirini sağlamayabilirsiniz. 
Python ile Veri Yapıları Listeler Selçuk Bozdağ
>>> harfler[2:] 
['t', 'h', 'o', 'n'] 
>>> harfler[:5] 
['p', 'y', 't', 'h', 'o'] 
Elemanlara erişimde olduğu gibi, dilimleme yaparken de negatif değerler kullanabiliriz. 
>>> harfler[-3:-1] 
['h', 'o'] 
Yukarıdaki örnekte, sondan üçüncü eleman dahil olmak üzere, sondan birinci elemana 
kadar ve sondan birinci eleman dahil olmamak üzere dilimleme yapılmıştır. Bununla 
birlikte, sondan üçüncü elemandan itibaren son eleman dahil kalan elemanlar listesini 
elde etmek için: 
>>> harfler[-3:] 
['h', 'o', 'n'] 
şeklinde erişmiş oluruz. 
Python ile Veri Yapıları Listeler Selçuk Bozdağ
Listelerde Değişiklik Yapmak 
Yeni Elemanlar Eklemek 
Listelere eleman eklemek için "append" metodu kullanılır. Bu metod, parametre olarak 
aldığı yeni elemanı listenin en sonuna ekler. 
>>> asal_sayilar.append(17) 
>>> asal_sayilar 
[1, 2, 3, 5, 7, 11, 13, 17] 
Dikkat çekici bir nokta ise, "append" metodunun çağrılmasının ardından yeni bir listenin 
oluşmayışıdır. Bunun nedeni, listelerin "değiştirilebilir" olmasıdır. 
Terminolojide bu tip nesnelere "mutable" nesneler adı verilir. Bunun tersi ise 
"değiştirilemeyen" nesnelerdir ki, bu nesnenelere en iyi örnek "string" nesneleridir. 
Değiştirilemeyen nesnelere terim olarak "immutable" nesneler denir. Literatür 
taramalarında bu terimlerle sıkça karşılaşabilirsiniz. 
Listenizi genişletmeniz de gereken bir durum olabilir. Başka bir listeyi, varolan listenize 
dahil etmek isteyebilirsiniz. Bu durumda "extend" metodunu kullanabilirsiniz. 
>>> sehirler = ['Ankara', 'Istanbul', 'Izmir'] 
>>> sehirler.extend( ['Adana', 'Bursa', 'Van'] ) 
>>> sehirler 
>>> ['Ankara', 'Istanbul', 'Izmir', 'Adana', 'Bursa', 'Van'] 
Python ile Veri Yapıları Listeler Selçuk Bozdağ
Bir diğer kullanım durumu ise, listenin sonuna değil, belirli bir indeksin gösterdiği yere 
eleman eklemek olabilir. Bunun için "insert" metodunu kullanabilirsiniz. 
>>> yapilacaklar 
['Fatura Ode', 'Dis hekiminden randevu al', 'Ders Ozetlerini gozden gecir', 
'Python ogrenmeye basla'] 
>>> yapilacaklar.insert(2, 'Odevleri yap') 
>>> yapilacaklar 
['Fatura Ode', 'Dis hekiminden randevu al', 'Odevleri yap', 'Ders Ozetlerini 
gozden gecir', 'Python ogrenmeye basla'] 
"insert" metodu iki parametre almaktadır. Birinci parametre, elemanın konumlanacağı 
indeks değeridir. İkinci parametre ise yerleştirmek istediğiniz elemandır. 
Listeden Eleman Silmek 
Listeden silmek istediğiniz elemanın indeks değeriyle ya da kendisini kullanarak 
silebilirsiniz. Birinci yöntem için "pop", ikinci metod için "remove" metodunu 
kullanabilirsiniz. Öncelikle "pop" metodunun kullanımını inceleyelim. Tahmin ettiğiniz 
üzere bir indeks parametresi bekliyor. Ancak, "pop" metodunun parametre beklemediği 
bir durumda var. Bu durumda da, listedeki en son elemanı siliyor. "pop" metodunu 
kullanırken, geri döndürdüğü değerin silinen eleman olduğunu da belirtelim. Aşağıdaki 
örnekte bir meyve tabağındaki meyvelerin isimlerini 
elemanlar olarak kullanarak, silme işlemlerimizi gerçekleştireceğiz. 
Python ile Veri Yapıları Listeler Selçuk Bozdağ
>>> meyveler = ['Elma', 'Kivi', 'Portakal', 'Uzum', 'Muz'] 
Bu meyve listesinden "Kivi" elemanını "pop" metodu silmek için indeks değeri olan "1" 
kullanılır. 
>>> meyveler.pop(1) 
'Kivi' 
>>> meyveler 
['Elma', 'Portakal', 'Uzum', 'Muz'] 
Parametre olmaksızın "pop" metodunu kullanmak istediğimizde ise en son eleman olan 
"Muz" silinecektir. "pop" metodunun yeni bir liste döndürmediğini, varolan listede 
değişiklik yaptığını tekrar hatırlatmak yerinde olacaktır. 
>>> meyveler 
['Elma', 'Portakal', 'Uzum', 'Muz'] 
>>> meyveler.pop() 
'Muz' 
>>> meyveler 
['Elma', 'Portakal', 'Uzum'] 
Python ile Veri Yapıları Listeler Selçuk Bozdağ
“remove” metodu ise “pop” metodundan farklı çalışmaktadır. Parametre olarak silinecek 
elemanın kendisini almaktadır. Silinecek eleman, liste içerisinde birden fazla yerde 
olabilir. Bu nedenle “remove” metodu, listede değeri ilk bulduğu elemanı siler. 
>>> meyveler = ['Elma', 'Portakal', 'Muz', 'Limon'] 
>>> meyveler.remove('Limon') 
>>> meyveler 
['Elma', 'Portakal', 'Muz'] 
>>> 
Bölüm Sonu 
Bu bölümde başlangıç seviyesinde, temel veri yapılarından söz ettik. Bölümün konusu 
olan listeler ile ilgili de yine temel seviyede bilgiler vermeye çalıştık. 
Bir sonraki bölümde “sözlük” kullanımı ve sözlükler üzerinde Python metodlarının nasıl 
çalıştığını göstermeye çalışacağız. 
Python ile Veri Yapıları Listeler Selçuk Bozdağ

More Related Content

Featured

Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 

Featured (20)

Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 

Python ile Veri Yapıları, Bölüm 1: Listeler

  • 1. Python ile Veri Yapıları Listeler Selçuk Bozdağ selcuk.bozdag@gmail.com 8 Aralık 2014 Python ile Veri Yapıları Listeler Selçuk Bozdağ
  • 2. Giriş Python harika bir programlama dili. Bu dili öğrenmek isteyenler, aslında günlük hayatlarında karşılaştıkları bir problemi "pratik ve çevik" bir biçimde sonuç alarak çözmek isteyen geliştiricilerdir. Gerçekten de bir sistem yöneticisi, bilimsel hesaplamalarla uğraşan bir araştırmacı ya da bir oyun geliştiricisi, Python dilini son derece kullanışlı ve sonuca hızlı, kararlı ve doğru götürdüğünü farketmişlerdir. Bu öğretici derste de bilgisayar bilimlerinde kullanılan temel veri yapılarının Python ile pratik ve etkili biçimde nasıl ele alındığı anlatılmıştır. Listeler, sözlükler, sekanslar, sabit listeler ve diğer temel yapılar örneklerle açıklanmıştır. Veri ve Modelleme Veri Yapısı nedir, öncelike bu kavramı anlamaya çalışalım. Günlük hayattan bazı örnekler sunarak giriş yapalım. Düzenli insanların en beğenilen özelliklerinden birisi de mutlaka bir ajandaya sahip olmalarıdır. Bu ajanda bazen bir defter, bazen de bir akıllı telefon uygulaması olabilir. Önemli olan ne içerdiğidir. Her ajandada günlük olarak yapılacak işlerin bir listesi yer almaktadır. İlk anahtar sözcüğü fark etmiş olabilirsiniz: liste. Listeler, belirli bir sıralama gözetmeksizin ard arda eklenen verilerden oluşturulur. – Faturaları öde – Diş hekiminden randevu al – Ders özetlerini gözden geçir – Python öğrenmeye başla gibi uzayan bir "Yapılacaklar Listesi" bilgiyi organize etmenin bir yoludur. Python ile Veri Yapıları Listeler Selçuk Bozdağ
  • 3. Bir başka organizasyon yöntemi ise telefon rehberlerinde yer alır. Her telefon numarasına karşılık gelen bir kişi vardır. – 110: Yangın – 154: Alo Trafik – 155: Polis İmdat – 135: Uyandırma Servisi Telefonu şeklinde bir sözlük oluşturabilirsiniz. Buradaki "sözlük" kelimesi, ikinci anahtar kelimemizdir. Verileri bir "anahtar" ve "değer" ikilisiyle listeliyoruz. Yukarıdaki iki örneği birleştirmek istersek, yapılacaklar listesinde, tarihleri anahtar olarak kabul edebiliriz. – 10.01.2015: – Faturaları öde – Diş hekiminden randevu al – Ders Özetlerini gözden geçir – Python öğrenmeye başla – 11.01.2015: – Sinemaya git – Mutfak alışverişi yap – Maketi tamamla Bilgisayar bilimlerinde veri organizasyonu, amacınızı gerçekleştirmek ve algoritmalarınızı beslemek için doğrudan etkisi olan öbekler anlamına geliyor. Python ile Veri Yapıları Listeler Selçuk Bozdağ
  • 4. Yukarıdaki örneklerde de gördüğünüz gibi üzerinde algoritmalarınızı uygulayabileceğiniz zengin veri yapıları sayesinde programlarımızı oluşturabiliyoruz. Bu veri yapılarını birlikte kullanarak, karmaşıklığı artan problemlere daha verimli ve etkili çözümler üretebiliyoruz. İlerleyen alt bölümlerde Python programlama dilinde gerçekleştirilen veri yapılarını ve kullanımlarını inceleyeceğiz. Listeler Liste, belki de en çok kullanılan veri yapısıdır. Değerler, birbiri ile virgülle ayrılarak köşeli parantezler içerisinde gruplanırlar ve böylece bir listeye sahip olursunuz. Aşağıdaki örneklerde bir takım listeler oluşturulmuştur. >>> asal_sayilar = [1, 2, 3, 5, 7, 11, 13] >>> yapilacaklar = [ 'Fatura Ode', 'Dis hekiminden randevu al', 'Ders Ozetlerini gozden gecir', 'Python ogrenmeye basla' ] >>> harfler = ['p', 'y', 't', 'h', 'o', 'n'] Liste Elemanlarına Erişim Python, üzerinde sıralı biçimde gezinilebilecek bir türe sahiptir. Bu türün adı "sequence" olarak tanımlıdır. Türkçeye "sıra" olarak çevirilebilir. Adından da anlaşılabileceği gibi, eğer "sequence" türünden bir veri yapısına sahipseniz, iki davranışa ya da metoda sahipsinizdir. Her bir "sequence" türü __getitem()__ ve __len()__ metodlarını tanımlamak zorundadır*. O zaman ilk olarak, yukarıda tanımladığımız listelerin uzunluklarını öğrenelim. Python ile Veri Yapıları Listeler Selçuk Bozdağ
  • 5. >>> len(asal_sayilar) 7 >>> len(yapilacaklar) 4 >>> len(harfler) 6 Boş bir liste için len() fonksiyonu 0 değerini üretecektir. >>> bos_liste = [] >>> len( bos_liste ) 0 Liste elemanlarına erişmek için "[ ]" operatörünü kullanabiliriz. İlk elemana erişirken operatöre değer olarak 0 veririz. 0, değer olarak değil bir indeks olarak algılanmalıdır. "Sıfırıncı liste elemanı" demek aslında listedeki ilk eleman anlamına gelir. İndeks, Türk Dil Kurumu sözlüğünde "dizin" olarak tanımlanmış bir kelime. "Birşeye endekslenmek" olarak örnekler veriliyor. Sıfırın, ilk elemana indekslenmesi; birin ikinci elemana indekslenmesi diye devam edebiliriz. Aslında indeks, işaret etmektir. Verilen örnekleri dikkatlice incelemenizi ve denemenizi öneriyoruz. >>> asal_sayilar[0] 1 En son elemana erişmek için ise index değeri olarak "-1" kullanılabilir. Farklı yöntemler de vardır. Örneğin listenin uzunluğunun bir eksiği de bize en son elemanın indeksini verecektir. Python ile Veri Yapıları Listeler Selçuk Bozdağ
  • 6. >>> asal_sayilar[-1] 13 >>> asal_sayilar[ len(asal_sayilar)-1 ] 13 Negatif indeks değerleri listenin sonundan itibaren erişimi sağlamaktadır. Örneğin "-1" indeksi "sondan birinci eleman" yani en son eleman anlamına gelmektedir. Python listelerinde, listenin belirli bir dilimini elde etmek de oldukça kolaydır ve son derece kullanışlıdır. Bunun için "[:]" operatörünü kullanırız. Bu dilimlerin her biri, İngilizcede "slice" olarak adlandırılır. Aşağıdaki ilk örneğinimizde "harfler" listesinin ikinci, üçüncü ve dördüncü elemanlarını bir liste olarak alıyoruz. >>> harfler[1:4] ['y', 't', 'h'] Bu örnekte operatörümüze ilk parametre olarak başlangıç indeksini, ikinci parametre olarak da bitiş indeksini sağlıyoruz. Bitiş indeksinin dışlayan olduğuna dikkat edelim. Yani "4 numaralı indeks" değeri olan 'o' harfi, sonuç listesinde yer almamaktadır. Dilimleme yaparken operatöre başlangıç ve bitiş değerlerinden birini verebilir ya da hiçbirini sağlamayabilirsiniz. Python ile Veri Yapıları Listeler Selçuk Bozdağ
  • 7. >>> harfler[2:] ['t', 'h', 'o', 'n'] >>> harfler[:5] ['p', 'y', 't', 'h', 'o'] Elemanlara erişimde olduğu gibi, dilimleme yaparken de negatif değerler kullanabiliriz. >>> harfler[-3:-1] ['h', 'o'] Yukarıdaki örnekte, sondan üçüncü eleman dahil olmak üzere, sondan birinci elemana kadar ve sondan birinci eleman dahil olmamak üzere dilimleme yapılmıştır. Bununla birlikte, sondan üçüncü elemandan itibaren son eleman dahil kalan elemanlar listesini elde etmek için: >>> harfler[-3:] ['h', 'o', 'n'] şeklinde erişmiş oluruz. Python ile Veri Yapıları Listeler Selçuk Bozdağ
  • 8. Listelerde Değişiklik Yapmak Yeni Elemanlar Eklemek Listelere eleman eklemek için "append" metodu kullanılır. Bu metod, parametre olarak aldığı yeni elemanı listenin en sonuna ekler. >>> asal_sayilar.append(17) >>> asal_sayilar [1, 2, 3, 5, 7, 11, 13, 17] Dikkat çekici bir nokta ise, "append" metodunun çağrılmasının ardından yeni bir listenin oluşmayışıdır. Bunun nedeni, listelerin "değiştirilebilir" olmasıdır. Terminolojide bu tip nesnelere "mutable" nesneler adı verilir. Bunun tersi ise "değiştirilemeyen" nesnelerdir ki, bu nesnenelere en iyi örnek "string" nesneleridir. Değiştirilemeyen nesnelere terim olarak "immutable" nesneler denir. Literatür taramalarında bu terimlerle sıkça karşılaşabilirsiniz. Listenizi genişletmeniz de gereken bir durum olabilir. Başka bir listeyi, varolan listenize dahil etmek isteyebilirsiniz. Bu durumda "extend" metodunu kullanabilirsiniz. >>> sehirler = ['Ankara', 'Istanbul', 'Izmir'] >>> sehirler.extend( ['Adana', 'Bursa', 'Van'] ) >>> sehirler >>> ['Ankara', 'Istanbul', 'Izmir', 'Adana', 'Bursa', 'Van'] Python ile Veri Yapıları Listeler Selçuk Bozdağ
  • 9. Bir diğer kullanım durumu ise, listenin sonuna değil, belirli bir indeksin gösterdiği yere eleman eklemek olabilir. Bunun için "insert" metodunu kullanabilirsiniz. >>> yapilacaklar ['Fatura Ode', 'Dis hekiminden randevu al', 'Ders Ozetlerini gozden gecir', 'Python ogrenmeye basla'] >>> yapilacaklar.insert(2, 'Odevleri yap') >>> yapilacaklar ['Fatura Ode', 'Dis hekiminden randevu al', 'Odevleri yap', 'Ders Ozetlerini gozden gecir', 'Python ogrenmeye basla'] "insert" metodu iki parametre almaktadır. Birinci parametre, elemanın konumlanacağı indeks değeridir. İkinci parametre ise yerleştirmek istediğiniz elemandır. Listeden Eleman Silmek Listeden silmek istediğiniz elemanın indeks değeriyle ya da kendisini kullanarak silebilirsiniz. Birinci yöntem için "pop", ikinci metod için "remove" metodunu kullanabilirsiniz. Öncelikle "pop" metodunun kullanımını inceleyelim. Tahmin ettiğiniz üzere bir indeks parametresi bekliyor. Ancak, "pop" metodunun parametre beklemediği bir durumda var. Bu durumda da, listedeki en son elemanı siliyor. "pop" metodunu kullanırken, geri döndürdüğü değerin silinen eleman olduğunu da belirtelim. Aşağıdaki örnekte bir meyve tabağındaki meyvelerin isimlerini elemanlar olarak kullanarak, silme işlemlerimizi gerçekleştireceğiz. Python ile Veri Yapıları Listeler Selçuk Bozdağ
  • 10. >>> meyveler = ['Elma', 'Kivi', 'Portakal', 'Uzum', 'Muz'] Bu meyve listesinden "Kivi" elemanını "pop" metodu silmek için indeks değeri olan "1" kullanılır. >>> meyveler.pop(1) 'Kivi' >>> meyveler ['Elma', 'Portakal', 'Uzum', 'Muz'] Parametre olmaksızın "pop" metodunu kullanmak istediğimizde ise en son eleman olan "Muz" silinecektir. "pop" metodunun yeni bir liste döndürmediğini, varolan listede değişiklik yaptığını tekrar hatırlatmak yerinde olacaktır. >>> meyveler ['Elma', 'Portakal', 'Uzum', 'Muz'] >>> meyveler.pop() 'Muz' >>> meyveler ['Elma', 'Portakal', 'Uzum'] Python ile Veri Yapıları Listeler Selçuk Bozdağ
  • 11. “remove” metodu ise “pop” metodundan farklı çalışmaktadır. Parametre olarak silinecek elemanın kendisini almaktadır. Silinecek eleman, liste içerisinde birden fazla yerde olabilir. Bu nedenle “remove” metodu, listede değeri ilk bulduğu elemanı siler. >>> meyveler = ['Elma', 'Portakal', 'Muz', 'Limon'] >>> meyveler.remove('Limon') >>> meyveler ['Elma', 'Portakal', 'Muz'] >>> Bölüm Sonu Bu bölümde başlangıç seviyesinde, temel veri yapılarından söz ettik. Bölümün konusu olan listeler ile ilgili de yine temel seviyede bilgiler vermeye çalıştık. Bir sonraki bölümde “sözlük” kullanımı ve sözlükler üzerinde Python metodlarının nasıl çalıştığını göstermeye çalışacağız. Python ile Veri Yapıları Listeler Selçuk Bozdağ