Python'da Veri Yapıları ve Algoritma: Bilmeniz Gereken Her Şey

Yayınlanan: 2020-05-06

Python'daki veri yapıları ve algoritmalar , bilgisayar bilimindeki en temel kavramlardan ikisidir. Herhangi bir programcı için vazgeçilmez araçlardır. Python'daki veri yapıları, bir program işlerken verilerin bellekte düzenlenmesi ve depolanması ile ilgilenir. Öte yandan, Python algoritmaları , belirli bir amaç için verilerin işlenmesine yardımcı olan ayrıntılı talimatlar kümesini ifade eder.

Alternatif olarak, belirli bir veri analizi problemini çözmek için farklı veri yapılarının algoritmalar tarafından mantıksal olarak kullanıldığı söylenebilir. Gerçek dünya sorunu veya tipik bir kodlama ile ilgili soru olsun, doğru bir çözüm bulmak istiyorsanız Python'daki veri yapılarını ve algoritmaları anlamak çok önemlidir. Bu makalede, farklı Python algoritmaları ve veri yapıları hakkında ayrıntılı bir tartışma bulacaksınız . Python hakkında daha fazla bilgi edinmek istiyorsanız, veri bilimi kurslarımıza göz atın.

Daha fazla bilgi edinin: R'de En Sık Kullanılan Altı Veri Yapısı

İçindekiler

Python'da veri yapıları nelerdir?

Veri yapıları, verileri düzenlemenin ve saklamanın bir yoludur; veriler ve veriler üzerinde gerçekleştirilebilecek çeşitli mantıksal işlemler arasındaki ilişkiyi açıklar. Veri yapılarının sınıflandırılmasının birçok yolu vardır. Bir yol, onları ilkel ve ilkel olmayan veri türleri olarak kategorize etmektir.

İlkel veri türleri Tamsayılar, Kayan Noktalar, Dizeler ve Boolean'ı içerirken, ilkel olmayan veri türleri Dizi, Liste, Tuples, Sözlük, Kümeler ve Dosyalardır. List, Tuples, Dictionaries ve Sets gibi bu ilkel olmayan veri türlerinden bazıları Python'da yerleşiktir. Python'da kullanıcı tanımlı başka bir veri yapısı kategorisi daha vardır; yani, kullanıcılar onları tanımlar. Bunlara Stack, Queue, Linked List, Tree, Graph ve HashMap dahildir.

İlkel veri yapıları

Bunlar, Python'da saf ve basit veri değerleri içeren temel veri yapılarıdır ve verileri işlemek için yapı taşları olarak hizmet eder. Python'daki dört ilkel değişken türü hakkında konuşalım:

  • Tamsayılar – Bu veri türü, sayısal verileri, yani ondalık nokta olmadan pozitif veya negatif tam sayıları temsil etmek için kullanılır. -1, 3 veya 6 deyin.
  • Float – Float, 'kayan noktalı gerçek sayı' anlamına gelir. Genellikle 2.0 veya 5.77 gibi bir ondalık nokta içeren rasyonel sayıları temsil etmek için kullanılır. Python dinamik olarak yazılmış bir programlama dili olduğundan, bir nesnenin depoladığı veri türü değiştirilebilirdir ve değişkeninizin türünü açıkça belirtmenize gerek yoktur.
  • Dize – Bu veri türü, bir alfabe, kelime veya alfasayısal karakter koleksiyonunu belirtir. Bir çift çift veya tek tırnak içine bir dizi karakter dahil edilerek oluşturulur. İki veya daha fazla Dizeyi birleştirmek için onlara '+' işlemi uygulanabilir. Yineleme, ekleme, büyük harf kullanma ve alma, Python'daki diğer String işlemlerinden bazılarıdır. Örnek: 'mavi', 'kırmızı' vb.
  • Boolean – Bu veri türü, karşılaştırma ve koşullu ifadelerde kullanışlıdır ve DOĞRU veya YANLIŞ değerlerini alabilir.

Daha fazlasını öğrenin: Python'da Veri Çerçeveleri

Yerleşik ilkel olmayan veri yapıları

İlkel veri yapılarının aksine, ilkel olmayan veri türleri yalnızca değerleri depolamakla kalmaz, aynı zamanda farklı formatlardaki bir değerler koleksiyonunu da depolar. Python'daki ilkel olmayan veri yapılarına bir göz atalım:

    • Listeler – Bu, Python'daki en çok yönlü veri yapısıdır ve köşeli parantez içine alınmış virgülle ayrılmış öğelerin bir listesi olarak yazılır. Bir Liste hem heterojen hem de homojen öğelerden oluşabilir. Listede uygulanabilen yöntemlerden bazıları şunlardır: index(), append(), extension(), insert(), remove(), pop(), vb. Listeler değiştirilebilir; diğer bir deyişle, kimlikleri bozulmadan tutularak içerikleri değiştirilebilir.

Kaynak

  • Tuples - Tuples, Listelere benzer ancak değişmezdir. Ayrıca, Listelerden farklı olarak, Tuple'lar köşeli parantezler yerine parantez içinde belirtilir. Değişmezlik özelliği, bir Tuple'da bir öğe tanımlandıktan sonra silinemeyeceğini, yeniden atanamayacağını veya düzenlenemeyeceğini belirtir. Veri yapısının beyan edilen değerlerinin manipüle edilmemesini veya geçersiz kılınmamasını sağlar.

Kaynak

  • Sözlükler – Sözlükler, anahtar/değer çiftlerinden oluşur. 'Anahtar' bir öğeyi tanımlar ve 'değer' öğenin değerini saklar. İki nokta üst üste, anahtarı değerinden ayırır. Öğeler virgülle ayrılır ve her şey süslü parantez içine alınır. Anahtarlar değişmezken (sayılar, Dizeler veya Tupleler), değerler herhangi bir türden olabilir.

Kaynak

  • Kümeler – Kümeler, sıralanmamış benzersiz öğeler topluluğudur. Listeler gibi, Kümeler de değişebilir ve köşeli parantez içinde yazılır, ancak iki değer aynı olamaz. Bazı Set yöntemleri arasında count(), index(), any(), all() vb. bulunur.

Kaynak

  • Listeler ve Diziler – Python'da yerleşik bir Dizi kavramı yoktur. Diziler, başlatmadan önce NumPy paketi kullanılarak içe aktarılabilir. NumPy hakkında daha fazla bilgi edinmek için python NumPy eğitimimize göz atabilirsiniz . Listeler ve Diziler, bir fark dışında çoğunlukla benzerdir - Diziler yalnızca homojen öğelerin koleksiyonlarıyken, Listeler hem homojen hem de heterojen öğeleri içerir.

Ödeme: İkili Ağaç Türleri

Python'da kullanıcı tanımlı veri yapıları

Python'daki veri yapıları ve algoritmalar hakkındaki tartışmamızın bir sonraki bölümünde, farklı kullanıcı tanımlı veri yapılarına kısa bir genel bakış yer almaktadır:

  • Yığınlar – Yığınlar, Python'daki doğrusal veri yapılarıdır. Öğeleri Yığınlarda depolamak, İlk Giren/Son Çıkaran (FILO) veya Son Giren/İlk Çıkar (LIFO) ilkelerine dayanır. Yığınlarda, bir uca yeni bir öğenin eklenmesine, aynı uçtan bir öğenin çıkarılması eşlik eder. 'Push' ve 'pop' işlemleri sırasıyla ekleme ve silme işlemleri için kullanılır. Stack ile ilgili diğer işlevler boş(), size() ve top()'dur. Yığınlar, Python kitaplığındaki modüller ve veri yapıları kullanılarak uygulanabilir – list, collections.deque ve tail.LifoQueue.
  • Kuyruk – Yığınlara benzer şekilde, Kuyruklar doğrusal veri yapılarıdır. Ancak, kalemler İlk Giren/ İlk Çıkar (FIFO) ilkesine göre depolanır. Bir Kuyrukta, en son eklenen öğe önce kaldırılır. Kuyruğa ilişkin işlemler, Sıraya Alma (öğe ekleme), Kuyruğa Alma (öğe silme), Ön ve Arka'yı içerir. Yığınlar gibi, Kuyruklar da Python kitaplığındaki modüller ve veri yapıları (liste, collections.deque ve kuyruk) kullanılarak uygulanabilir.
  • Ağaç – Ağaçlar, Python'da doğrusal olmayan veri yapılarıdır ve kenarlarla birbirine bağlanan düğümlerden oluşur. Bir Ağacın özellikleri, bir düğümün kök düğüm olarak atanmasıdır, kök dışındaki her düğümün ilişkili bir üst düğümü vardır ve her düğümün rastgele sayıda alt düğümü olabilir. İkili Ağaç veri yapısı, öğelerinin ikiden fazla çocuğu olmayan bir yapıdır.
  • Bağlantılı Liste – Bağlantılar aracılığıyla bir araya getirilen bir dizi veri öğesi, Python'da Bağlantılı Liste olarak adlandırılır. Aynı zamanda doğrusal bir veri yapısıdır. Bağlantılı Listedeki her veri öğesi, işaretçi kullanılarak diğerine bağlanır. Python kitaplığı Bağlantılı Listeler içermediğinden, düğüm kavramı kullanılarak uygulanır. Bağlantılı Listeler, eleman ekleme/silme kolaylığı ile dinamik bir boyuta sahip olma konusunda Dizilere göre bir avantaja sahiptir.
  • Grafik – Python'daki bir Grafik, bazı nesne çiftlerinin bağlantılarla birbirine bağlı olduğu bir dizi nesneyi resimli olarak temsil eder. Köşeler birbirine bağlı nesneleri temsil eder ve köşeleri birleştiren bağlantılar kenarlar olarak adlandırılır. Python sözlüğü veri türü, grafikleri sunmak için kullanılabilir. Özünde, sözlüğün 'anahtarları' köşeleri temsil eder ve 'değerler' köşeler arasındaki bağlantıları veya kenarları gösterir.
  • HashMaps/Hash Tables – Bu tür veri yapısında, bir Hash işlevi veri öğesinin adresini veya indeks değerini üretir. İndeks değeri, verilere daha hızlı erişim sağlayan veri değerinin anahtarı olarak hizmet eder. Sözlük veri türünde olduğu gibi, Karma Tablolarda anahtar/değer çiftleri bulunur, ancak bir karma işlevi anahtarı oluşturur.

Python'da algoritmalar nelerdir?

Python algoritmaları , belirli bir soruna çözüm bulmak için yürütülen bir dizi talimattır. Algoritmalar dile özgü olmadıklarından, çeşitli programlama dillerinde uygulanabilirler. Algoritmaların yazımına hiçbir standart kural rehberlik etmez. Kaynağa ve soruna bağlıdırlar ancak akış denetimi (if-else) ve döngüler (do, while, for) gibi bazı ortak kod yapılarını paylaşırlar. Aşağıdaki bölümlerde, Ağaç Geçişi, Sıralama, Arama ve Grafik Algoritmalarını kısaca tartışacağız.

Ağaç Geçiş Algoritmaları

Geçiş, kök düğümden başlayarak bir Ağacın tüm düğümlerini ziyaret etme sürecidir. Bir Ağaçta üç farklı şekilde geçilebilir:

– Sıralı geçiş, önce soldaki alt ağacı, ardından kökü ve ardından sağ alt ağacı ziyaret etmeyi içerir.

– Ön sipariş geçişinde, ilk ziyaret edilecek kök düğüm, ardından sol alt ağaç ve son olarak sağ alt ağaçtır.

– Sipariş sonrası geçiş algoritmasında, önce sol alt ağaç ziyaret edilir, ardından sağ alt ağaç ziyaret edilir ve en son kök düğüm ziyaret edilir.

Daha fazla bilgi edinin: Mükemmel Karar Ağacı Nasıl Oluşturulur

Sıralama Algoritmaları

Sıralama algoritmaları, verileri belirli bir biçimde düzenlemenin yollarını belirtir. Sıralama, veri aramanın yüksek düzeyde optimize edilmesini ve verilerin okunabilir bir biçimde sunulmasını sağlar. Python'daki beş farklı Sıralama algoritmasına bakalım:

  • Kabarcık Sıralaması – Bu algoritma, eğer yanlış bir sıradaysa bitişik öğelerin tekrar tekrar değiştirildiği karşılaştırmaya dayanır.
  • Birleştirme Sıralaması – Böl ve yönet algoritmasına dayalı olarak, Merge sort, Diziyi iki yarıya böler, sıralar ve ardından birleştirir.
  • Ekleme Sıralaması – Bu sıralama, ilk iki öğenin karşılaştırılması ve sıralanmasıyla başlar. Ardından, üçüncü öğe, önceden sıralanmış iki öğeyle karşılaştırılır ve bu şekilde devam eder.
  • Kabuk Sıralaması – Bir Ekleme sıralama biçimidir, ancak burada, uzaktaki öğeler sıralanır. Belirli bir listenin büyük bir alt listesi sıralanır ve listenin boyutu, tüm öğeler sıralanana kadar aşamalı olarak küçülür.
  • Seçim Sıralaması – Bu algoritma, bir öğe listesinden minimum değeri bularak başlar ve onu sıralanmış bir listeye yerleştirir. İşlem daha sonra listede sıralanmamış kalan öğelerin her biri için tekrarlanır. Sıralanan listeye giren yeni eleman, mevcut elemanlarla karşılaştırılır ve doğru konuma yerleştirilir. Tüm elemanlar sıralanana kadar süreç devam eder.

Algoritma Arama

Arama algoritmaları, farklı veri yapılarından bir öğenin kontrol edilmesine ve alınmasına yardımcı olur. Bir tür arama algoritması, listenin sıralı olarak geçtiği ve her öğenin kontrol edildiği (doğrusal arama) sıralı arama yöntemini uygular. Başka bir türde, aralıklı aramada, öğeler sıralanmış veri yapılarında (ikili arama) aranır. Bazı örneklere bakalım:

  • Doğrusal Arama - Bu algoritmada, her öğe sırayla tek tek aranır.
  • İkili Arama – Arama aralığı tekrar tekrar ikiye bölünür. Aranacak eleman, aralığın merkezi bileşeninden daha düşükse, aralık alt yarıya daraltılır. Aksi takdirde, üst yarıya daraltılır. Değer bulunana kadar işlem tekrarlanır.

Grafik Algoritmaları

Kenarlarını kullanarak grafikleri çaprazlamanın iki yöntemi vardır. Bunlar:

  • Derinlik Öncelikli Geçiş (DFS) – Bu algoritmada, bir grafik derinliğe doğru hareketle çaprazlanır. Herhangi bir yineleme bir çıkmazla karşılaştığında, bir sonraki tepe noktasına gitmek ve bir arama başlatmak için bir yığın kullanılır. DFS, set veri türleri kullanılarak Python'da uygulanır.
  • Genişlik Öncelikli Geçiş (BFS) – Bu algoritmada, bir grafik enine hareketle çaprazlanır. Herhangi bir yineleme bir çıkmazla karşılaştığında, bir sonraki tepe noktasına gitmek ve bir arama başlatmak için bir kuyruk kullanılır. BFS, kuyruk veri yapısı kullanılarak Python'da uygulanır.

Algoritma Analizi

  • A Priori Analizi – Bu, algoritmanın uygulanmasından önce teorik bir analizini temsil eder. Bir algoritmanın verimliliği, işlemci hızı gibi faktörlerin sabit olduğu ve algoritma üzerinde hiçbir sonucu olmadığı varsayılarak ölçülür.
  • Bir Arka Analiz – Bu, algoritmanın uygulanmasından sonra ampirik analizini ifade eder. Seçilen algoritmayı uygulamak için bir programlama dili kullanılır, ardından bir bilgisayarda yürütülür. Bu analiz, algoritmanın çalışması için gereken zaman ve alan gibi istatistikleri toplar.

Çözüm

İster programlama konusunda deneyimli olun, ister programlamada yeni olun , Python'daki veri yapılarını ve algoritmaları göz ardı edemezsiniz . Bu kavramlar, veriler üzerinde işlemler gerçekleştirirken çok önemlidir ve veri işlemeyi optimize etmeniz gerekir. Veri yapıları bilginin düzenlenmesine yardımcı olurken, algoritmalar veri analizi problemini çözmek için kılavuzluk sağlar. Birlikte, girdi verileri olarak verilen bilgileri işlemek için bilgisayar bilimcilerine bir yol sağlarlar.

Veri bilimi hakkında bilgi edinmek istiyorsanız, IIIT-B & upGrad'ın çalışan profesyoneller için oluşturulmuş ve 10'dan fazla vaka çalışması ve proje, uygulamalı uygulamalı atölye çalışmaları, endüstri uzmanlarıyla mentorluk, 1 Endüstri danışmanlarıyla bire bir, en iyi firmalarla 400+ saat öğrenim ve iş yardımı.

Veri Yapıları ve Algoritmaları öğrenmek kaç gün sürer?

Bilgisayar Bilimi söz konusu olduğunda, Veri Yapıları ve Algoritmalar, en zor konular olarak kabul edilir. Ancak, her programcı için öğrenmeleri gerçekten önemlidir. Günde yaklaşık 3-4 saat harcıyorsanız, veri yapılarını ve algoritmaları öğrenmek için en az 6 ila 8 haftaya ihtiyacınız olacaktır.

Burada katı bir zaman çizelgesi yok çünkü bu tamamen sizin hızınıza ve öğrenme yeteneklerinize bağlı olacak. Temelleri kavramada iyiyseniz, veri yapıları ve algoritmaların derinlemesine kavramlarını anlamanın oldukça kolay olduğunu göreceksiniz.

Algoritmanın farklı türleri nelerdir?

Algoritma, herhangi bir sorunu çözmek için izlenmesi gereken adım adım bir prosedürdür. Farklı problemler, problemi çözmek için farklı algoritmalara ihtiyaç duyar. Her programcı, algoritmanın gereksinimlerine ve hızına göre belirli bir sorunu çözmek için bir algoritma seçer.

Yine de, programcıların genellikle farklı sorunları çözmek için dikkate aldığı bazı üst düzey algoritmalar vardır. İyi bilinen algoritmalardan bazıları, Brute-force algoritması, Greedy algoritması, Rastgele algoritma, Dinamik programlama algoritması, Özyinelemeli algoritma, Böl ve Yönet algoritması ve Geri İzleme algoritmasıdır.

Python'un ana kullanımı nedir?

Python, farklı etkinlikler gerçekleştirmek için kullanılan genel amaçlı bir programlama dilidir. Python ile ilgili en iyi şey, herhangi bir özel uygulamaya bağlı olmaması ve gereksinimlerinize göre kullanabilmenizdir. Kütüphanelerin mevcudiyeti, çok yönlülüğü ve kolay anlaşılır yapısı nedeniyle geliştiriciler arasında en çok kullanılan programlama dillerinden biri olarak kabul edilir.

Python, büyük ölçüde web sitelerinin ve yazılımların geliştirilmesi için kullanılır. Bunun dışında görev otomasyonu, veri görselleştirme ve veri analizi için de kullanılır. Python'u öğrenmek oldukça kolaydır ve bu nedenle programcı olmayanlar bile finansmanı düzenlemek ve diğer günlük görevleri yerine getirmek için bu dili benimsiyorlar.