Python Slice: Günlük Kodlama İçin Faydalı Yöntemler
Dilimlemenin verinizi zahmetsizce çıkarmasını, yeniden düzenlemesini ve analiz etmesini keşfedin. Tam hassasiyet için negatif indeksleri, çok boyutlu dilimleri ve gelişmiş adım değerlerini kullanın.
Karmaşık dilim indeksleriyle uğraşmaktan yorulduysanız ya da dilimlediğiniz listelerin beklediğiniz gibi davranmamasının nedenini merak ediyorsanız, doğru yerdesiniz. Bu rehberde Python dilimlemeyi lokmalık parçalara ayıracağız (kelime oyunu amaçlı). Dilimleme sözdiziminin temellerinden çok boyutlu dizilerle gelişmiş tekniklere kadar her şeyi ele alacağız. Ayrıca, hemen kullanabileceğiniz gerçek uygulama örnekleri de paylaşacağım.
Güçlü bir Python temeli atmak için hevesliyseniz, dilimleme, veri yapıları ve daha fazlası gibi temel becerileri öğrenmenize yardımcı olmak üzere tasarlanmış Python Fundamentals kursumuza da göz atın.
Python Dilimlemeyi Anlamak
Python’da dilimlemenin ne anlama geldiği ve neden faydalı olduğuna kısaca bakalım.
Python’da dilimleme nedir?
Python’da dilimleme; string, liste, tuple ve range gibi sıralı yapılarından belirli bölümleri çıkarmanın bir yöntemidir. Dilimleme, yerleşik slice() fonksiyonunu kullanmak ya da daha da yaygın olan şu parantezli gösterimi kullanmak anlamına gelebilir: [start:end:step]. Bu işlevsellik Python dilinin çekirdek bir parçasıdır; bu yüzden herhangi bir ek paket import etmeden dilimleme yapabilirsiniz. NumPy veya pandas gibi harici kütüphanelerdeki dilimleme bazı ilginç farklar sunar; bunları aşağıda ayrıntılı olarak ele alacağım.
Neden Python’da dilimleme kullanılır?
Python dilimleme, veri işlemede en verimli ve sezgisel araçlardan biridir. İster veri kümelerini analiz ediyor, ister string işliyorsunuz ya da dizilerle çalışıyorsunuz; dilimleme, verinin alt kümelerine erişmenizi ve onları yönetmenizi sağlar.
Her geliştiricinin bunu ustalıkla kullanması için nedenler:
Temiz ve öz kod: Dilimleme, tekrarlı döngülere veya karmaşık koşullara olan ihtiyacı ortadan kaldırır; daha kısa, daha temiz ve hata ayıklaması kolay kod üretir.
Verimli veri işleme: Manuel indekslemenin aksine, dilimleme performans için optimize edilmiştir. Python’un dahili mekanizmaları dilimleme işlemlerini hızlı ve bellek açısından verimli kılar.
Veri yapıları arasında esneklik: Dilimleme, string ve listelerden NumPy dizilerine ve pandas veri çerçevelerine kadar Python ekosisteminde sorunsuz çalışır.
Gerçek dünya uygulamaları: Dilimleme günlük kodlama görevlerini basitleştirir. Bir veri kümesinin yalnızca bir bölümünü işlemek mi gerekiyor? Bir tablodan belirli sütunları çıkarmak mı istiyorsunuz? Ya da bir metin analizi projesi için bir stringi tersine çevirmek mi? Dilimleme tam size göre.
Python’da Dilimlemenin Temel Yöntemleri
Söylediğim gibi, dilimleme Python’da çekirdek bir özelliktir ve geliştiricilerin listeler, stringler ve tuple’lar gibi sıralı yapılardan bölümler çıkarmasına olanak tanır. Python, hiçbir şey import etmeden dilimleme yapmak için iki birincil yol sunar: : dilimleme sözdizimi ve slice() fonksiyonu. Her iki yöntemi de anlamak faydalıdır; çünkü ikisini de görme olasılığınız yüksektir.
: kullanarak Python dilimleme sözdizimi
sequence[start:stop:step] dilimleme sözdizimi, bir dizinin bölümlerine erişmenin en yaygın yoludur. Her bir parametre—start, stop ve step— dilimlemenin nasıl yapıldığını kontrol eder:
start: Dilimin başladığı indeks (dahil). Belirtilmezse varsayılan 0’dır.
stop: Dilimin bittiği indeks (hariç). Belirtilmezse varsayılan olarak dizinin uzunluğudur.
step: Öğeler arasındaki aralığı belirler. Belirtilmezse varsayılan 1’dir.
Bu dilimleme yöntemini stringlere de uygulayabilirsiniz:
text ="Python Slicing"print(text[7:])# Output: "Slicing" print(text[::-1])# Output: "gnicilS nohtyP" (reverses the string) Altyapı:
Hatta liste içinden aralıklı ögeleri dilimleme ile çekebilirsiniz:
data =[100,200,300,400,500]
alternate = data[::2]print(alternate)# Output: [100, 300, 500] Altyapı:
Gerçek bir senaryoda, dilimleme özellikle büyük veri kümeleriyle çalışırken kullanışlıdır. Diyelim ki milyonlarca kayda sahip bir günlük dosyasıyla uğraşıyorsunuz ve analiz için son 1.000 girdiyi çıkarmanız gerekiyor:
Bu yaklaşım, tüm veri kümesini belleğe yüklemekten kaçınarak uygulamanızın verimli çalışmasını sağlar.
Python slice() fonksiyonunu kullanma
Python’un slice() fonksiyonu, dilimleme parametrelerini yeniden kullanılabilir slice nesneleri olarak tanımlamanın alternatif bir yolunu sunar. Bu nesneler dilimleme mantığını kapsüller ve birden çok dizi üzerinde uygulanabilir.
# Create a slice object
slice_obj =slice(1,4)# Apply to a list
numbers =[10,20,30,40,50]print(numbers[slice_obj])# Output: [20, 30, 40]# Apply to a string
text ="Python"print(text[slice_obj])# Output: "yth" Altyapı:
Python slice() fonksiyonunun avantajları
Şahsen slice() fonksiyonunu kullanmayı seviyorum; çünkü aynı slice nesnesini farklı dizilerde yeniden kullanmama, tekrarlayan dilimleme mantığından kaçınmama olanak tanıyor. Ayrıca kodu okumayı ve bakımını kolaylaştırıyor.
Aşağıdaki örnekte görüldüğü gibi, bir slice nesnesini bir kez tanımlayıp birden çok dizi üzerinde yeniden kullanıyoruz. Bu, aynı start, end ve step değerlerini tekrar tekrar belirtme ihtiyacını ortadan kaldırır. Aynı zamanda yeniden kullanılabilirliği artırır; çünkü dilim sınırlarını tek bir yerde değiştirmeniz, o dilimin tüm kullanım noktalarını otomatik olarak günceller.
Her iki dilimleme yöntemi de Python’da yerini bulur. Sözdizimi kısa işlemler için idealdir; slice() ise yeniden kullanılabilir ve dinamik dilimleme mantığı için vazgeçilmezdir.
Özellik
Sözdizimi slice()
Fonksiyon
Kullanım Kolaylığı
Hızlı dilimleme görevleri için basit
Yeniden kullanılabilir mantık için daha iyi
Okunabilirlik
Basit dilimler için ideal
Karmaşık dilimlerde açıklık katar
Çok Yönlülük
Kod içinde tek kullanımla sınırlı
Birden çok dizi boyunca yeniden kullanılabilir
Kütüphanelerde Python Slice
Dilimleme yalnızca Python’un yerleşik veri yapılarıyla sınırlı değildir—veri manipülasyonunda vazgeçilmez olan NumPy ve pandas gibi güçlü kütüphanelere de uzanır. Temel ilkeler tutarlı kalsa da, bu kütüphaneler kendi veri yapıları için ek dilimleme yetenekleri sunar.
NumPy’de dilimleme
NumPy dizileri, büyük ve çok boyutlu veri kümelerini işlemek için güçlü araçlar sunarak dilimlemeyi bir üst seviyeye taşır. NumPy dilimlemedeki kritik bir fark görünüm (view) ve kopya ayrımıdır: Bir NumPy dizisini dilimlemek genellikle yeni bir kopya değil, bir görünüm (orijinal veriye referans) döndürür. Bu davranış büyük veri kümeleriyle çalışırken verimlilik sağlar; ancak istenmeyen değişikliklerden kaçınmak için dikkatli olmayı gerektirir.
1B dizilerin dilimlenmesi
import numpy as np
# Create a 1D array
array = np.array([10,20,30,40,50])# Slice elements from index 1 to 3print(array[1:4])# Output: [20 30 40] # Apply stepprint(array[::2])# Output: [10 30 50] Altyapı:
Çok boyutlu dizilerin dilimlenmesi
Çok boyutlu dizilerde, dilimleme her eksene bağımsız olarak uygulanır.
# Create a 2D array
array_2d = np.array([[1,2,3],[4,5,6],[7,8,9]])# Slice the first two rows and first two columnsprint(array_2d[:2,:2])# Output:# [[1 2]# [4 5]] # Slice the last columnprint(array_2d[:,-1])# Output: [3 6 9] Altyapı:
NumPy dilimlemenin faydaları
Bellek Verimliliği: Dilimler üzerindeki işlemler veriyi kopyalamaktan kaçınır, hesaplamaları hızlandırır.
Esneklik: Çok boyutlu dilimleme, veri alt kümeleri üzerinde hassas kontrol sağlar.
pandas, DataFrame ve Series ile sorunsuz çalışacak şekilde dilimlemeyi genişleterek yapılandırılmış verilere erişmek ve onları yönetmek için daha sezgisel yollar sunar. Python’un temel dilimlemesini temel almakla birlikte, pandas dilimlemesi tablolu veriye uyarlanmış benzersiz davranışlar içerir.
Bir DataFrame’de satır ve sütunların dilimlenmesi
import pandas as pd
# Create a sample DataFrame
student_data ={'Name':['Alice','Bob','Charlie'],'Age':[25,30,35],'Score':[85,90,95]}
students = pd.DataFrame(student_data
# Slice the first two rowsprint(students[:2])# Output:# Name Age Score# 0 Alice 25 85# 1 Bob 30 90 # Slice specific columns by nameprint(students[['Name','Score']])# Output:# Name Score# 0 Alice 85# 1 Bob 90# 2 Charlie 95 Altyapı:
.loc[] ve .iloc[] kullanımı
pandas, daha hassas kontrol için .loc[] (etiket tabanlı) ve .iloc[] (indeks tabanlı) yöntemlerini sunar.
# Slice using .iloc (index-based)print(df.iloc[1:,1:])# Output:# Age Score# 1 30 90# 2 35 95 Altyapı:
# Slice using .loc (label-based)print(df.loc[:1,['Name','Age']])# Output:# Name Age# 0 Alice 25# 1 Bob 30 Altyapı:
pandas dilimlemedeki temel farklar
Kapsayıcı aralık: Python dilimlemesinin aksine, .loc[] satır ve sütunlarda bitiş indeksini de içerir.
Karma indeksleme: pandas hem etiketlerle hem de pozisyonlarla dilimlemeye izin vererek daha fazla esneklik sağlar.
Şimdi de string, liste, tuple gibi farklı veri yapılarında Python dilimleme örneklerine bakarak dilimlemenin farklı veri yapılarına nasıl uygulandığını görelim.
Stringlerin dilimlenmesi
Python’da stringler karakter dizileridir; bu da onları tıpkı listeler veya tuple’lar gibi dilimleyebileceğiniz anlamına gelir. Bu, alt dizgiler çıkarmak, metni ters çevirmek veya veriyi biçimlendirmek için dilimlemeyi kullanışlı kılar. Burada : kullanıyorum.
Basic string slicing# Extract a substring
text ="Python Slicing"print(text[7:14])# Output: Slicing # Reverse a stringprint(text[::-1])# Output: gnicilS nohtyP Altyapı:
slice() fonksiyonu, tutarlı dilimleme işlemleri için yeniden kullanılabilir slice nesneleri oluşturmanıza olanak tanır.
# Create a slice object
slicer =slice(7,14)# Apply the slice objectprint(text[slicer])# Output: Slicing Altyapı:
Pratik kullanım alanları
Veri ayrıştırma: CSV satırları veya günlük dosyaları gibi yapılandırılmış metinden belirli alanları çıkarın.
Metin işleme: Önekleri, sonekleri veya istenmeyen karakterleri kaldırarak stringleri biçimlendirin.
Listelerin ve tuple’ların dilimlenmesi
Listeler ve tuple’lar Python’un temel veri yapılarıdır ve bunları dilimlemek işinizi kolaylaştırabilir.
Temel liste dilimleme
# Extract elements from a list
numbers =[10,20,30,40,50]print(numbers[1:4])# Output: [20, 30, 40] # Skip elements using stepsprint(numbers[::2])# Output: [10, 30, 50] Altyapı:
Tuple’ların dilimlenmesi
Tuple’lar değiştirilemezdir; ancak yine de bölümlerini çıkarmak için dilimleme çalışır.
# Slice a tuple
colors =("red","green","blue","yellow")print(colors[:2])# Output: ('red', 'green') Altyapı:
Filtreleme ve yeniden sıralama
Dilimleme, ögeleri filtrelemek veya yeniden sıralamak için kullanışlı bir yoldur.
# Filter odd-indexed elements
data =[5,10,15,20,25]
filtered = data[1::2]# Output: [10, 20] Altyapı:
Veri analizinde dilimleme
Veri analizinde dilimleme, daha fazla inceleme için veri alt kümelerini çıkarmak ve yeniden düzenlemek konusunda rol oynar. Veri analizindeki kullanım örnekleri arasında, odaklı analiz için ilgili satır veya sütunları çıkardığınız alt küme seçimi ve daha iyi görselleştirme veya raporlama için veri kümelerini yeniden düzenleyebildiğiniz veri dönüşümü bulunur.
NumPy ile dilimleme
import numpy as np
# Create a 2D array
data = np.array([[1,2,3],[4,5,6],[7,8,9]])# Extract the first two rowsprint(data[:2,:])# Output:# [[1 2 3]# [4 5 6]] Altyapı:
NumPy ile çalışmak hakkında söylenecek çok daha fazla şey var; ancak NumPy dilimlemeyi derinlemesine keşfetmek için Data Structures and Algorithms in Python kursumuza göz atabilirsiniz.
pandas ile dilimleme
Bir seçenek de, satır ve sütunlara erişmenize ve onları yönetmenize olanak tanıyan dilimleme yetenekleri sunan pandas’tır. İşte bir DataFrame’de hem satırları hem sütunları nasıl dilimleyeceğinize dair hızlı bir gösterim:
import pandas as pd
# Create a DataFrame
df = pd.DataFrame({'Name':['Alice','Bob','Charlie'],'Age':[25,30,35],'Score':[85,90,95]})# Slice rows and columnsprint(df.loc[:1,['Name','Score']])# Output:# Name Score# 0 Alice 85# 1 Bob 90 Altyapı:
Gelişmiş Python Dilimleme Teknikleri
Daha gelişmiş teknikleri anladığınızda, veri yapılarını etkileyici bir hassasiyet ve verimlilikle manipüle edebilirsiniz. Aşağıdaki teknikler daha temiz ve hızlı Python kodu yazmanıza yardımcı olacaktır.
Listeleri dilimleme ile değiştirme
Dilimlemenin daha az bilinen güçlerinden biri, listeleri doğrudan değiştirebilmesidir. Tek satırda birden çok öğeyi değiştirebilir, ekleyebilir veya silebilirsiniz.
Python’ın kopya mı yoksa görünüm mü oluşturduğunu anlamak, özellikle büyük veri kümelerinde veri yapıları dilimlenirken bellek yönetimi açısından kritik önemdedir. Şunu bilin ki yerleşik listeler ve stringlerde dilimleme her zaman orijinal dizinin bir kopyasını oluşturur; ancak NumPy dizilerinde dilimleme bir görünüm oluşturur; yani hem orijinal dizi hem de dilim bellekte aynı veriyi işaret eder.
Aşağıdaki kodda, dilimleme işlemi bir kopya yerine orijinal NumPy dizisinin bir görünümünü oluşturur. Bu, arr ve sliced değişkenlerinin bellekte aynı alttaki veriye referans verdiği anlamına gelir. Sonuç olarak, sliced üzerinde yapılan değişiklikler doğrudan arr’i etkiler.
Negatif indeksleme, uzunluğu bilinmeyen dizilerle çalışırken veya veriyi geriye doğru işlerken özellikle kullanışlıdır.
Çok boyutlu dilimleme
Dilimleme tek boyutlu yapılarla sınırlı değildir. NumPy gibi kütüphanelerde çok boyutlu dizileri hassasiyetle dilimleyebilirsiniz.
import numpy as np
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])# Extract a sub-matrix
sub_matrix = matrix[:2,1:]print(sub_matrix)# Output:# [[2, 3],# [5, 6]]Altyapı:
Çok boyutlu dilimleme için ipuçları:
Her boyut için dilimlemeyi ayırmak üzere virgül kullanın.
Belirsizlik yaratacak şekilde negatif indekslerle varsayılan dilimlemeyi : karıştırmaktan kaçının.
Hata Ayıklama İpucu: Çok boyutlu dilimleme yaparken hedeflediğiniz alt kümeyi vurduğunuzdan emin olmak için hata ayıklamada ara dilimleri her zaman yazdırın.
Yaygın Python Dilimleme Hataları
Python dilimleme güçlüdür; ancak hatalardan muaf değildir. Bazı yaygın tuzaklar deneyimli geliştiricileri bile zorlayabilir. Bu sorunları ve çözümlerini anlamak, temiz ve doğru kod için gereklidir.
Bir-birimlik hata yapmak
Bir-birimlik hata, dilimleme işlemlerinizde başlangıç veya bitiş indeksleri istenmeyen ögeleri dahil ettiğinde veya hariç bıraktığında ortaya çıkar. Bu, dilimlemedeki en yaygın sorunlardan biridir ve yanlış sonuçlara veya kodunuzda hatalara yol açabilir.
Burada, bitiş indeksi 3 konumundaki ögeyi hariç tutar ve istenmeyen bir eksikliğe neden olur. Bu hatadan nasıl kaçınılır:
Bitiş indeksi kuralını anlayın: Dilimlemede bitiş indeksi hariçtir; yani sonuçta yer almaz. O ögeyi dahil etmek istiyorsanız bitiş indeksine her zaman 1 ekleyin.
Açık uzunluklar kullanın: Diliminiz belirli bir indeks aralığını içermeliyse, başlangıç-bitiş hesaplamasının amacınızla uyuştuğunu doğrulayın.
Adım değerleri, dilimleme yaparken indeksler arasında kaç öge atlanacağını belirler. Adım değerlerinin nasıl çalıştığını yanlış anlamak, özellikle negatif adımlarda beklenmedik sonuçlara yol açabilir.
Çok az ya da çok fazla öge atlamak
numbers =[1,2,3,4,5]# Expecting every second element
step_result = numbers[::3]print(step_result)# Output: [1, 4]Altyapı:
Burada, 3 adımı çok fazla öge atlayarak beklenenden daha az değerle sonuçlanır. Aşağıdaki kod kafa karıştıran negatif adımlara bir örnektir.
Negatif adımlar listeyi tersine çevirirken ögeleri atlar; ancak davranışlarını yanlış anlamak sonucu öngörmeyi zorlaştırabilir. Adım değerlerini doğru kullanmayı düşünürken şunları dikkate alırım:
Aralıklarınızı planlayın: Adım değeri ihtiyacınız olan aralıkla uyumlu olsun. Her ikinci öge için step değerini 2 kullanın.
Negatif adımları izole şekilde test edin: Ters dilimlerin nasıl davrandığını anladığınızdan emin olmak için küçük örneklerle deneyin.
Adım değerlerini başlangıç/bitiş indeksleriyle birleştirin: Adım değerlerini uygularken dilimin aralığını sınırlamak için başlangıç ve bitiş indekslerini kullanın.
İşte daha iyi adım kullanımına dair düzeltilmiş bir örnek:
Every second element:
numbers =[1,2,3,4,5]print(numbers[::2])# Output: [1, 3, 5]
Reverse with a step:
numbers =[1,2,3,4,5]print(numbers[4::-2])# Output: [5, 3, 1]Altyapı:
En iyi uygulamaları takip etmemek
Hata yapmamanız için işte bazı iyi fikirler:
Dilimlerinizi görselleştirin: Dilimleme mantığınızı doğrulamak için yorumlar veya print ifadeleri kullanın.
Örneklerle pratik yapın: Başlangıç, bitiş ve adım parametrelerini anlamak için küçük ve basit listelerle başlayın.
Açıklık için yerleşik fonksiyonları kullanın: Şüpheye düştüğünüzde, daha açık bir dilimleme mantığı için slice() fonksiyonu ile dilimler oluşturun.
Sonuç
Bu rehber boyunca aşağıdaki kavramları inceledik:
Dilimleme sözdiziminin ve parametrelerinin temelleri; start, stop ve step dahil.
Listeleri dilimleme ile değiştirme gibi ilginç teknikler; bellek açısından verimli uygulamalar ve çok boyutlu verilerin ele alınması.
Bir-birimlik hatalar ve adım değerlerinin yanlış anlaşılması gibi yapılan hatalar ve bunlardan nasıl kaçınılacağı.
Anlamınızı pekiştirmenin en iyi yolu uygulamalı pratik yapmaktır. Gerçek veri kümeleriyle deneyin, sınır durumlarını test edin ve temellerin ötesine geçerek kendinize meydan okuyun.
DataCamp yardım için burada. Etkileşimli bir öğrenme deneyimi için Data Manipulation with Python kursumuzu ve Developing Python Packages gibi diğer kursları deneyin. İster yeni başlıyor olun ister tekniklerinizi geliştirmek isteyin, bu kaynaklar dilimleme ve diğer becerilerde ustalaşmanıza yardımcı olabilir.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Karmaşık dilim indeksleriyle uğraşmaktan yorulduysanız ya da dilimlediğiniz listelerin beklediğiniz gibi davranmamasının nedenini merak ediyorsanız, doğru yerdesiniz. Bu rehberde Python dilimlemeyi lokmalık parçalara ayıracağız (kelime oyunu amaçlı). Dilimleme sözdiziminin temellerinden çok boyutlu dizilerle gelişmiş tekniklere kadar her şeyi ele alacağız. Ayrıca, hemen kullanabileceğiniz gerçek uygulama örnekleri de paylaşacağım.
Güçlü bir Python temeli atmak için hevesliyseniz, dilimleme, veri yapıları ve daha fazlası gibi temel becerileri öğrenmenize yardımcı olmak üzere tasarlanmış Python Fundamentals kursumuza da göz atın.
Python Dilimlemeyi Anlamak
Python’da dilimlemenin ne anlama geldiği ve neden faydalı olduğuna kısaca bakalım.
Python’da dilimleme nedir?
Python’da dilimleme; string, liste, tuple ve range gibi sıralı yapılarından belirli bölümleri çıkarmanın bir yöntemidir. Dilimleme, yerleşik
slice()fonksiyonunu kullanmak ya da daha da yaygın olan şu parantezli gösterimi kullanmak anlamına gelebilir:[start:end:step]. Bu işlevsellik Python dilinin çekirdek bir parçasıdır; bu yüzden herhangi bir ek paket import etmeden dilimleme yapabilirsiniz. NumPy veya pandas gibi harici kütüphanelerdeki dilimleme bazı ilginç farklar sunar; bunları aşağıda ayrıntılı olarak ele alacağım.Neden Python’da dilimleme kullanılır?
Python dilimleme, veri işlemede en verimli ve sezgisel araçlardan biridir. İster veri kümelerini analiz ediyor, ister string işliyorsunuz ya da dizilerle çalışıyorsunuz; dilimleme, verinin alt kümelerine erişmenizi ve onları yönetmenizi sağlar.
Her geliştiricinin bunu ustalıkla kullanması için nedenler:
Python’da Dilimlemenin Temel Yöntemleri
Söylediğim gibi, dilimleme Python’da çekirdek bir özelliktir ve geliştiricilerin listeler, stringler ve tuple’lar gibi sıralı yapılardan bölümler çıkarmasına olanak tanır. Python, hiçbir şey import etmeden dilimleme yapmak için iki birincil yol sunar:
:dilimleme sözdizimi veslice()fonksiyonu. Her iki yöntemi de anlamak faydalıdır; çünkü ikisini de görme olasılığınız yüksektir.: kullanarak Python dilimleme sözdizimi
sequence[start:stop:step]dilimleme sözdizimi, bir dizinin bölümlerine erişmenin en yaygın yoludur. Her bir parametre—start,stopvestep— dilimlemenin nasıl yapıldığını kontrol eder:start: Dilimin başladığı indeks (dahil). Belirtilmezse varsayılan 0’dır.stop: Dilimin bittiği indeks (hariç). Belirtilmezse varsayılan olarak dizinin uzunluğudur.step: Öğeler arasındaki aralığı belirler. Belirtilmezse varsayılan 1’dir.Bir örnek deneyelim:
Bu dilimleme yöntemini stringlere de uygulayabilirsiniz:
Hatta liste içinden aralıklı ögeleri dilimleme ile çekebilirsiniz:
Gerçek bir senaryoda, dilimleme özellikle büyük veri kümeleriyle çalışırken kullanışlıdır. Diyelim ki milyonlarca kayda sahip bir günlük dosyasıyla uğraşıyorsunuz ve analiz için son 1.000 girdiyi çıkarmanız gerekiyor:
Bu yaklaşım, tüm veri kümesini belleğe yüklemekten kaçınarak uygulamanızın verimli çalışmasını sağlar.
Python slice() fonksiyonunu kullanma
Python’un
slice()fonksiyonu, dilimleme parametrelerini yeniden kullanılabilir slice nesneleri olarak tanımlamanın alternatif bir yolunu sunar. Bu nesneler dilimleme mantığını kapsüller ve birden çok dizi üzerinde uygulanabilir.Sözdizimi ve kullanım
slice()fonksiyonu şu biçimi izler:İşte bir örnek:
Python slice() fonksiyonunun avantajları
Şahsen
slice()fonksiyonunu kullanmayı seviyorum; çünkü aynı slice nesnesini farklı dizilerde yeniden kullanmama, tekrarlayan dilimleme mantığından kaçınmama olanak tanıyor. Ayrıca kodu okumayı ve bakımını kolaylaştırıyor.Aşağıdaki örnekte görüldüğü gibi, bir slice nesnesini bir kez tanımlayıp birden çok dizi üzerinde yeniden kullanıyoruz. Bu, aynı
start,endvestepdeğerlerini tekrar tekrar belirtme ihtiyacını ortadan kaldırır. Aynı zamanda yeniden kullanılabilirliği artırır; çünkü dilim sınırlarını tek bir yerde değiştirmeniz, o dilimin tüm kullanım noktalarını otomatik olarak günceller.Her iki yöntemin karşılaştırması
Her iki dilimleme yöntemi de Python’da yerini bulur. Sözdizimi kısa işlemler için idealdir;
slice()ise yeniden kullanılabilir ve dinamik dilimleme mantığı için vazgeçilmezdir.slice()Kütüphanelerde Python Slice
Dilimleme yalnızca Python’un yerleşik veri yapılarıyla sınırlı değildir—veri manipülasyonunda vazgeçilmez olan NumPy ve pandas gibi güçlü kütüphanelere de uzanır. Temel ilkeler tutarlı kalsa da, bu kütüphaneler kendi veri yapıları için ek dilimleme yetenekleri sunar.
NumPy’de dilimleme
NumPy dizileri, büyük ve çok boyutlu veri kümelerini işlemek için güçlü araçlar sunarak dilimlemeyi bir üst seviyeye taşır. NumPy dilimlemedeki kritik bir fark görünüm (view) ve kopya ayrımıdır: Bir NumPy dizisini dilimlemek genellikle yeni bir kopya değil, bir görünüm (orijinal veriye referans) döndürür. Bu davranış büyük veri kümeleriyle çalışırken verimlilik sağlar; ancak istenmeyen değişikliklerden kaçınmak için dikkatli olmayı gerektirir.
1B dizilerin dilimlenmesi
Çok boyutlu dizilerin dilimlenmesi
Çok boyutlu dizilerde, dilimleme her eksene bağımsız olarak uygulanır.
NumPy dilimlemenin faydaları
NumPy’yi daha derinlemesine incelemek için Introduction to Data Science with Python kursumuza göz atın.
pandas’ta dilimleme
pandas, DataFrame ve Series ile sorunsuz çalışacak şekilde dilimlemeyi genişleterek yapılandırılmış verilere erişmek ve onları yönetmek için daha sezgisel yollar sunar. Python’un temel dilimlemesini temel almakla birlikte, pandas dilimlemesi tablolu veriye uyarlanmış benzersiz davranışlar içerir.
Bir DataFrame’de satır ve sütunların dilimlenmesi
.loc[] ve .iloc[] kullanımı
pandas, daha hassas kontrol için
.loc[](etiket tabanlı) ve.iloc[](indeks tabanlı) yöntemlerini sunar.pandas dilimlemedeki temel farklar
Kapsayıcı aralık: Python dilimlemesinin aksine,
.loc[]satır ve sütunlarda bitiş indeksini de içerir.Karma indeksleme: pandas hem etiketlerle hem de pozisyonlarla dilimlemeye izin vererek daha fazla esneklik sağlar.
Gelişmiş teknikler için Manipulating DataFrames with pandas kursumuzu keşfedin.
Farklı Veri Tipleriyle Python Dilimleme
Şimdi de string, liste, tuple gibi farklı veri yapılarında Python dilimleme örneklerine bakarak dilimlemenin farklı veri yapılarına nasıl uygulandığını görelim.
Stringlerin dilimlenmesi
Python’da stringler karakter dizileridir; bu da onları tıpkı listeler veya tuple’lar gibi dilimleyebileceğiniz anlamına gelir. Bu, alt dizgiler çıkarmak, metni ters çevirmek veya veriyi biçimlendirmek için dilimlemeyi kullanışlı kılar. Burada
:kullanıyorum.slice()fonksiyonu, tutarlı dilimleme işlemleri için yeniden kullanılabilir slice nesneleri oluşturmanıza olanak tanır.Pratik kullanım alanları
Listelerin ve tuple’ların dilimlenmesi
Listeler ve tuple’lar Python’un temel veri yapılarıdır ve bunları dilimlemek işinizi kolaylaştırabilir.
Temel liste dilimleme
Tuple’ların dilimlenmesi
Tuple’lar değiştirilemezdir; ancak yine de bölümlerini çıkarmak için dilimleme çalışır.
Filtreleme ve yeniden sıralama
Dilimleme, ögeleri filtrelemek veya yeniden sıralamak için kullanışlı bir yoldur.
Veri analizinde dilimleme
Veri analizinde dilimleme, daha fazla inceleme için veri alt kümelerini çıkarmak ve yeniden düzenlemek konusunda rol oynar. Veri analizindeki kullanım örnekleri arasında, odaklı analiz için ilgili satır veya sütunları çıkardığınız alt küme seçimi ve daha iyi görselleştirme veya raporlama için veri kümelerini yeniden düzenleyebildiğiniz veri dönüşümü bulunur.
NumPy ile dilimleme
NumPy ile çalışmak hakkında söylenecek çok daha fazla şey var; ancak NumPy dilimlemeyi derinlemesine keşfetmek için Data Structures and Algorithms in Python kursumuza göz atabilirsiniz.
pandas ile dilimleme
Bir seçenek de, satır ve sütunlara erişmenize ve onları yönetmenize olanak tanıyan dilimleme yetenekleri sunan pandas’tır. İşte bir DataFrame’de hem satırları hem sütunları nasıl dilimleyeceğinize dair hızlı bir gösterim:
Gelişmiş Python Dilimleme Teknikleri
Daha gelişmiş teknikleri anladığınızda, veri yapılarını etkileyici bir hassasiyet ve verimlilikle manipüle edebilirsiniz. Aşağıdaki teknikler daha temiz ve hızlı Python kodu yazmanıza yardımcı olacaktır.
Listeleri dilimleme ile değiştirme
Dilimlemenin daha az bilinen güçlerinden biri, listeleri doğrudan değiştirebilmesidir. Tek satırda birden çok öğeyi değiştirebilir, ekleyebilir veya silebilirsiniz.
Ögeleri değiştirin:
Öge ekleyin:
Ögeleri silin:
Bellek verimliliği
Python’ın kopya mı yoksa görünüm mü oluşturduğunu anlamak, özellikle büyük veri kümelerinde veri yapıları dilimlenirken bellek yönetimi açısından kritik önemdedir. Şunu bilin ki yerleşik listeler ve stringlerde dilimleme her zaman orijinal dizinin bir kopyasını oluşturur; ancak NumPy dizilerinde dilimleme bir görünüm oluşturur; yani hem orijinal dizi hem de dilim bellekte aynı veriyi işaret eder.
Aşağıdaki kodda, dilimleme işlemi bir kopya yerine orijinal NumPy dizisinin bir görünümünü oluşturur. Bu,
arrvesliceddeğişkenlerinin bellekte aynı alttaki veriye referans verdiği anlamına gelir. Sonuç olarak,slicedüzerinde yapılan değişiklikler doğrudanarr’i etkiler.İstenmeyen yan etkilerden kaçınmak için harici kütüphanelerde dilimleri değiştirirken daima dikkatli olun.
Özel durumları göz önünde bulundurmak
Dilimleme güçlüdür; ancak kusursuz değildir. İşte yaygın tuzaklar:
Sınır dışı dilimleme
Sınırların ötesinde dilimleme hata vermez—boş bir liste döndürür.
Boş dilimler
Başlangıç ve bitiş indeksleri aynı olduğunda sonuç boş bir dilimdir.
Kafa karıştıran adım davranışı
-2adımı listeyi tersten dilimler ve her ikinci öğeyi atlar.Negatif indeksleme
Negatif indeksleme, dilimlemeye baştan değil de sondan başlamanızı sağlar.
Son ögelere erişme
Bir listeyi tersine çevirme
Negatif indeksleme, uzunluğu bilinmeyen dizilerle çalışırken veya veriyi geriye doğru işlerken özellikle kullanışlıdır.
Çok boyutlu dilimleme
Dilimleme tek boyutlu yapılarla sınırlı değildir. NumPy gibi kütüphanelerde çok boyutlu dizileri hassasiyetle dilimleyebilirsiniz.
Çok boyutlu dilimleme için ipuçları:
Her boyut için dilimlemeyi ayırmak üzere virgül kullanın.
Belirsizlik yaratacak şekilde negatif indekslerle varsayılan dilimlemeyi
:karıştırmaktan kaçının.Hata Ayıklama İpucu: Çok boyutlu dilimleme yaparken hedeflediğiniz alt kümeyi vurduğunuzdan emin olmak için hata ayıklamada ara dilimleri her zaman yazdırın.
Yaygın Python Dilimleme Hataları
Python dilimleme güçlüdür; ancak hatalardan muaf değildir. Bazı yaygın tuzaklar deneyimli geliştiricileri bile zorlayabilir. Bu sorunları ve çözümlerini anlamak, temiz ve doğru kod için gereklidir.
Bir-birimlik hata yapmak
Bir-birimlik hata, dilimleme işlemlerinizde başlangıç veya bitiş indeksleri istenmeyen ögeleri dahil ettiğinde veya hariç bıraktığında ortaya çıkar. Bu, dilimlemedeki en yaygın sorunlardan biridir ve yanlış sonuçlara veya kodunuzda hatalara yol açabilir.
Burada, bitiş indeksi 3 konumundaki ögeyi hariç tutar ve istenmeyen bir eksikliğe neden olur. Bu hatadan nasıl kaçınılır:
İşte düzeltilmiş bir örnek:
Adım değerlerini yanlış anlamak
Adım değerleri, dilimleme yaparken indeksler arasında kaç öge atlanacağını belirler. Adım değerlerinin nasıl çalıştığını yanlış anlamak, özellikle negatif adımlarda beklenmedik sonuçlara yol açabilir.
Çok az ya da çok fazla öge atlamak
Burada,
3adımı çok fazla öge atlayarak beklenenden daha az değerle sonuçlanır. Aşağıdaki kod kafa karıştıran negatif adımlara bir örnektir.Negatif adımlar listeyi tersine çevirirken ögeleri atlar; ancak davranışlarını yanlış anlamak sonucu öngörmeyi zorlaştırabilir. Adım değerlerini doğru kullanmayı düşünürken şunları dikkate alırım:
Aralıklarınızı planlayın: Adım değeri ihtiyacınız olan aralıkla uyumlu olsun. Her ikinci öge için
stepdeğerini2kullanın.Negatif adımları izole şekilde test edin: Ters dilimlerin nasıl davrandığını anladığınızdan emin olmak için küçük örneklerle deneyin.
Adım değerlerini başlangıç/bitiş indeksleriyle birleştirin: Adım değerlerini uygularken dilimin aralığını sınırlamak için başlangıç ve bitiş indekslerini kullanın.
İşte daha iyi adım kullanımına dair düzeltilmiş bir örnek:
En iyi uygulamaları takip etmemek
Hata yapmamanız için işte bazı iyi fikirler:
Dilimlerinizi görselleştirin: Dilimleme mantığınızı doğrulamak için yorumlar veya print ifadeleri kullanın.
Örneklerle pratik yapın: Başlangıç, bitiş ve adım parametrelerini anlamak için küçük ve basit listelerle başlayın.
Açıklık için yerleşik fonksiyonları kullanın: Şüpheye düştüğünüzde, daha açık bir dilimleme mantığı için
slice()fonksiyonu ile dilimler oluşturun.Sonuç
Bu rehber boyunca aşağıdaki kavramları inceledik:
Dilimleme sözdiziminin ve parametrelerinin temelleri;
start,stopvestepdahil.Listeleri dilimleme ile değiştirme gibi ilginç teknikler; bellek açısından verimli uygulamalar ve çok boyutlu verilerin ele alınması.
Bir-birimlik hatalar ve adım değerlerinin yanlış anlaşılması gibi yapılan hatalar ve bunlardan nasıl kaçınılacağı.
Anlamınızı pekiştirmenin en iyi yolu uygulamalı pratik yapmaktır. Gerçek veri kümeleriyle deneyin, sınır durumlarını test edin ve temellerin ötesine geçerek kendinize meydan okuyun.
DataCamp yardım için burada. Etkileşimli bir öğrenme deneyimi için Data Manipulation with Python kursumuzu ve Developing Python Packages gibi diğer kursları deneyin. İster yeni başlıyor olun ister tekniklerinizi geliştirmek isteyin, bu kaynaklar dilimleme ve diğer becerilerde ustalaşmanıza yardımcı olabilir.