Ardışık Veri Tipleri. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

Benzer belgeler
Kümeler. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

Mantıksal Kontrol ve Döngü Komutları

Sözlükler. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

Pandas. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

Girdi Çıktı İşlemleri

Lambda, Map, Filter ve Dizi Tamamlama

Veri Tipleri. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

Fonksiyonlar. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

Giriş. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

Scipy. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

Standart Veri Tipleri

Python ile Programlamaya Giris

Pointer Kavramı. Veri Yapıları

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Özyineleme (Recursion)

Python ile Programlamaya Giris

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur

Göstericiler (Pointers)

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

Nesne Yönelimli Programlama

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

Genel Programlama II

Yrd. Doç. Dr. Caner ÖZCAN

Python ile Programlamaya Giriş DERS 8: DEMETLER VE SÖZLÜKLER DR. HÜSEYİN BAHTİYAR

PYTHON PROGRAMLAMA DİLİ

Bölüm 6. Veri Türleri ISBN

Burada a değişkeninin türü integer olarak verildi. Peki biz bu ifadeyi tırnak içerisinde yazarsak ne olur?

Bölüm 6. Veri Tipleri ISBN

PYTHON PROGRAMLAMA DİLİ

ALGORİTMA VE PROGRAMLAMA I

BİL1001 Bilgisayar Bilimlerine Giriş 1

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

Listeler. Liste Tanımlamak

Teori/Saat Uygulama/Saat Laboratuar/Saat AKTS BLM Dersin Amacı

AST415 Astronomide Sayısal Çözümleme - I. 0. Derse Giriş

DOKUZ EYLÜL ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ DEKANLIĞI DERS/MODÜL/BLOK TANITIM FORMU. Dersin Kodu: CME 1002

JAVADA DİZİ İŞLEMLERİ

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

Python Programlama Dili

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERS KİTAPLARI LİSTESİ

Yrd. Doç. Dr. Caner ÖZCAN

Teori/Saat Uygulama/Saat Laboratuar/Saat AKTS BLM Dersin Amacı

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Diziler İndisli Değişkenler

BÖLÜM 11: YAPISAL VERİ TİPLERİ

HSancak Nesne Tabanlı Programlama I Ders Notları

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Görsel Programlama DERS 04. Görsel Programlama - Ders04/ 1

Bilgisayar Programlama (COMPE 102) Ders Detayları

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

AST415 Astronomide Sayısal Çözümleme - I. 6. Diziler ve Matrisler (NumPy Modülü)

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

YZM 2105 Nesneye Yönelik Programlama

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

çindekiler 3 Python Programlarn Yürütme Kaynak Program... 24

Kaya Oğuz.

Mantıksal İşlemler. 7.1 true, false, nil

YZM 2116 Veri Yapıları

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Bilgisayar Programlama (COMPE 102) Ders Detayları

YZM 2116 Veri Yapıları

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Değişkenler ve Veri tipleri. Ders Notları

Üst Düzey Programlama

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

D İ Z İ L E R A R R A Y S

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

1 NEDEN PROGRAMLAMA ÖĞRENMELIYIZ?

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

ALGORİTMA VE PROGRAMLAMA I

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

Veri Yapıları ve Algoritmalar dönem

R ile Programlamaya Giriş ve Uygulamalar

PYTHON 3. Python Nedir? Yrd. Doç. Dr. Murat Olcay ÖZCAN

Pointers (İşaretçiler)

Data Science Boot Camp

Diziler (Arrays) Çok Boyutlu Diziler

Nesne Tabanlı Programlama

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-10 Diziler. Yrd. Doç. Dr. Ümit ATİLA

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Ruby. Prof.Dr.Timur Karaçay Başkent Üniversitesi

Veri Yapıları. Öğr.Gör.Günay TEMÜR Düzce Üniversitesi Teknolojis Fakültesi

Hafta 13 Fonksiyonlar

C++ Dersi: Nesne Tabanlı Programlama

String Sınıfını Yönetmek

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

Python GELECEK. Barış Metin Linux Sistemleri. Python Programlama Dili

Transkript:

Ardışık Veri Tipleri Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

Ardışık Veri Tipleri Ardışık veri tipleri, Python programlarında önemli bir yer tutmaktadır Python 6 adet ardışık veri tipi bulunmaktadır: strings byte sequence byte arrays list tuple range nesnesi Bu ardışık tipleri farklı gibi görünse de, önemli bir ortak yönleri bulunmaktadır: Bu veri tiplerinde elemanlar ardışık olarak bulunmaktadır.

Ardışık Veri Tipleri Ardışık veri tiplerinin elemanlarına indisler ile ulaşılabilir. Metin tipi değişkeninin elemanlarına indisler ile erişim: >>> metin = "Python ile Programlama" >>> print(metin[0], metin[11]) PP Liste tipi değişkeninin elemanlarına indisler ile erişim: >>> l = ["Ankara", "İstanbul", "İzmir", "Adana"] >>> print(l[1], l[2]) İstanbul İzmir

Ardışık Veri Tipleri Python'da veri tipi farklı olsa da (string, list, tuple vb.), ardışık veri tipleri üzerindeki fonksiyonlar ortakdır. Örneğin, bir ardışık veri tipinin uzunluğu "len()" fonksiyonu ile bulunabilir: >>> metin = "Python ile Programlama" >>> l = ["Ankara", "İstanbul", "İzmir", "Adana"] >>> print(len(metin),len(l)) 22 4

Listeler Listeler genel olarak C, C++ veya Java gibi programlama dillerindeki "dizi"lere benzetilebilir. Bununla birlikte, Python listeleri klasik dizilere göre çok daha esnek ve güçlüdür. Öncelikle, bir "liste" içindeki elemanlar aynı türden (integer, string, float vb.) olmak zorunda değildir. Listeler çalışma zamanında genişletilebilir, daraltılabilir. Klasik "dizi (array)"lerde boyut derleme zamanında sabittir. Python'da listeler, sıralı nesneler dizisidir. Bu nesneler, farklı türde olabildiği gibi bazı liste'ler de olabilir.

Listeler Python'da listelerin genel özellikleri: Elemanlar sıralı olarak bulunur Elemanlar herhangi bir nesne türünde olabilir Liste elemanlarına indisler ile erişilir Başka listeler, başka listeler içeren başka listeler de elemanlar olabilir Boyutları sabit değildir Değiştirilebilir (mutable) türdendirler

Listeler Python'da listelerin gösterimi için bazı örnekler: Gösterim Açıklama [] Boş liste [1,1,2,3,5,8] Tamsayılardan oluşan bir liste [42, "JFM212", 3.1415] Farklı veri tiplerinden oluşan bir liste ["Ankara", "Adana", "Bursa", "İzmir", "Gaziantep", "Antalya","Konya", "Samsun"] Metin tipi veri tiplerinden oluşan bir liste [["Ankara","Konya", 7556900], ["New York","Londra",2193031], ["Antalya", "Samsun", 123466]] ["İller", ["ilçeler", ["beldeler", ["köyler", "mezralar", 1021]]]] Eleman olarak liste(ler) içeren bir liste Birden fazla iç içe liste içeren bir liste

Listeler Listenin elemanlarına ve alt elemanlarına erişim: Elemanlara indisler ile erişilir. Erişilen elemanın kendisi de bir liste ise yine indis kullanılabilir. >>> bilgi = [["Ali","Demir"],[[["Atatürk Cad.", "24"], "06100"],"Ankara"]] >>> print(bilgi[0]) ['Ali','Demir'] >>> print(bilgi[0][1]) Demir >>> print(bilgi[1][0][1]) 06100

Demetler (Tuples) Bir "demet" değiştirilemez (immutable) türde bir listedir. Demetler listelere benzer şekilde tanımlanırlar ancak "[]" yerine "()" kullanılır Elemanlar erişim aynı listelerdeki gibi yapılır. Liste yerine demet kullanmanın avantajları: Demetler genel olarak listelere göre daha hızlıdır Değiştirilemez olmalı programlama hatalarını azaltır Demetler, listelerin aksine, daha sonra göreceğimiz "sözlük" veri tiplerinde "anahtar" olarak kullanılabilir.

Demetler (Tuples) Demetin elemanları değiştirilemez Dilimleme (slicing) işlemi aynı listelerdeki gibi yapılır >>> t = ("Listeler", "ve", "demetler") >>> t[0] 'Listeler' >>> t[1:3] ('ve', 'demetler') >>> t[0]="yeni değer" Traceback (most recent call last): File "<stdin>", line 1, in <module>

Ardışık Veri Tiplerinde Birleştirme (concatenation) ve Tekrarlama (repetition) Python'da ardışık veri tipleri tıpkı metin tipi değişkenlerde (string) olduğu gibi "+" operatörü ile birleştirilebilirler: >>> a = [1,2,5,4] >>> b = [8,14,9] >>> c = [45,10,6] >>> a + b + c [1, 2, 5, 4, 8, 14, 9, 45, 10, 6] Benzer şekilde "*" ile operatörü ile tekrarlama yapılabilir: >>> a*4 [1, 2, 5, 4, 1, 2, 5, 4, 1, 2, 5, 4, 1, 2, 5, 4]

Ardışık Veri Tiplerinde Eleman Kontrolü Herhangi bir elemanın bir ardışık veri tipinde olup olmadığını anlamak için "in" operatörü kullanılır: >>> a = [1,2,5,4] >>> 2 in a True >>> 7 not in a True >>> b = ("Ankara","İzmir","İstanbul") >>> 'Ankara' in b True >>> 'Adana' not in b True

Ardışık Veri Tiplerindek Kopyalama Sığ/derin Kopyalama (shallow copy) ve Derin (deep copy) Python'da bir değişkene yeni bir değer atandığında, değişkeninin daha önce sahip olduğu adresteki veriler değiştirilmek yerine yeni bir adres verilir. >>> x = 3 >>> y = x >>> print(id(x), id(y)) 1616756784 1616756784 >>> y = 4 >>> print(id(x), id(y)) 1616756784 1616756800 >>> print(x,y) 3 4

Ardışık Veri Tiplerindek Kopyalama Sığ/derin Kopyalama (shallow copy) ve Derin (deep copy) Bu durumda ardışık veri tiplerinde de geçerlidir. >>> renkler = ["kırmızı","mavi","yeşil"] >>> renkler2 = renkler >>> print(id(renkler),id(renkler2)) 4317096 4317096 >>> renkler2 = ["turuncu","kahverengi"] >>> print(renkler,renkler2) ['kırmızı', 'mavi', 'yeşil'] ['turuncu', 'kahverengi'] >>> print(id(renkler),id(renkler2)) 4317096 33918808 Hafızadaki yeni adres alıyor!

Ardışık Veri Tiplerindek Kopyalama Sığ/derin Kopyalama (shallow copy) ve Derin (deep copy) Ancak, yeni bir atama yapmadan ardışık veri tipinin bir elemanını değiştirdiğimizde önceki ardışık veri değişkeninin de içeriği değiştirilir. renkler değişkenin İçeriği de değişiyor! >>> renkler = ["kırmızı","mavi","yeşil"] >>> renkler2 = renkler >>> print(id(renkler),id(renkler2)) 4317096 4317096 >>> renkler2[0] = "turuncu" >>> print(renkler,renkler2) ['turuncu', 'mavi', 'yeşil'] ['turuncu', 'mavi', 'yeşil'] >>> print(id(renkler),id(renkler2)) 4317096 4317096 Hafızadaki yerleri aynı!

Ardışık Veri Tiplerindek Kopyalama Sığ/derin Kopyalama (shallow copy) ve Derin (deep copy) Bu nedenlerle, ardışık tipteki bir değişkeni kopyalamak özel yöntemler kullanmak gerekir. Bunlardan biri de "sığ kopyalama" dır: >>> renkler = ["kırmızı","mavi","yeşil"] >>> renkler2 = renkler[:] >>> print(id(renkler),id(renkler2)) 2678696 10456760 >>> renkler2[0] = "turuncu" >>> print(renkler,renkler2) ['kırmızı', 'mavi', 'yeşil'] ['turuncu', 'mavi', 'yeşil'] Dilimleme Operatörü! (sığ kopyalama) aynı adrese sahip iki değişken yerine yeni adres veriliyor!

Ardışık Veri Tiplerindek Kopyalama Sığ/derin Kopyalama (shallow copy) ve Derin (deep copy) Ardışık tipteki değişken içerisinde yine ardışık tipte bir değişken varsa, bu durumda (:) operatörü de istenilen kopyalamayı yapamaz: >>> renkler = [["kırmızı","mavi"],"yeşil"] >>> renkler2 = renkler[:] >>> print(id(renkler),id(renkler2)) 10473840 2678696 >>> renkler2[0][0] = "turuncu" >>> print(renkler,renkler2) [['turuncu', 'mavi'], 'yeşil'] [['turuncu', 'mavi'], 'yeşil'] Farklı adresler veriliyor! renkler değişkeninin elemanı değişiyor!

Ardışık Veri Tiplerindek Kopyalama Sığ/derin Kopyalama (shallow copy) ve Derin (deep copy) Ardışık tipteki değişken içerisinde yine ardışık tipte bir değişken varsa bu durumda kopyalama işlemi için derin kopyalama yapmak gerekir. Derin kopyalamada copy modülünden deepcopy fonksiyonu kullanılır. >>> from copy import deepcopy >>> renkler = [["kırmızı","mavi"],"yeşil"] >>> renkler2 = deepcopy(renkler) >>> renkler2[0][0] = "turuncu" >>> print(renkler,renkler2) [['kırmızı', 'mavi'], 'yeşil'] [['turuncu', 'mavi'], 'yeşil']

Kaynakça 1 Wentworth, P., Elkner, J., Downey, A.B., Meyers, C. (2014). How to Think Like a Computer Scientist: Learning with Python (3nd edition). 2 Pilgrim, M. (2014). Dive into Python 3 by. Free online version: DiveIntoPython3.org ISBN: 978-1430224150. 3 Summerfield, M. (2014) Programming in Python 3 2nd ed (PIP3) : - Addison Wesley ISBN: 0-321-68056-1. 4 Summerfield, M. (2014) Programming in Python 3 2nd ed (PIP3) : - Addison Wesley ISBN: 0-321-68056-1. 5 Jones E, Oliphant E, Peterson P, et al. SciPy: Open Source Scientific Tools for Python, 2001-, http://www.scipy.org/. 6 Millman, K.J., Aivazis, M. (2011). Python for Scientists and Engineers, Computing in Science & Engineering, 13, 9-12. 7 John D. Hunter (2007). Matplotlib: A 2D Graphics Environment, Computing in Science & Engineering, 9, 90-95. 8 Travis E. Oliphant (2007). Python for Scientific Computing, Computing in Science & Engineering, 9, 10-20. 9 Goodrich, M.T., Tamassia, R., Goldwasser, M.H. (2013). Data Structures and Algorithms in Python, Wiley. 10 http://www.diveintopython.net/ 11 https://docs.python.org/3/tutorial/ 12 http://www.python-course.eu 13 https://developers.google.com/edu/python/ 14 http://learnpythonthehardway.org/book/