0Pricing
Coding Interview Prep · Ders

Listeler, Demetler ve Dilimleme

Klasik kodlama problemlerinden alınan uygulamalı örneklerle Python liste işlemlerinde, dilimleme söz diziminde ve demetlerin değişmezliğinde ustalaşın.

Listeler, Demetler ve Dilimleme, CoddyKit'te ücretsiz bir Coding Interview Prep dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Coding Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Coding Interview Prep kursu toplamda 4 dersten oluşur.

Python Listeleri: Dinamik Diziler

Python listesi, her tür veriyi tutan ve kendiliğinden büyüyen dinamik bir dizidir. Sıralıdır, değiştirilebilir ve dizin üzerinden anında O(1) erişim sağlar. Kod temel kullanımı gösterir.

nums = [3, 1, 4, 1, 5]
print(nums[0])   # 3
print(nums[-1])  # 5  (last element)
nums.append(9)
print(len(nums)) # 6

Yaygın Liste İşlemleri

Şunları iyice öğrenin: Sona append ve pop işlemleri O(1), başa insert işlemi ise O(n) sürer. Dar döngülerde remove kullanmaktan kaçının; her seferinde yeniden tarama yapar.

stack = []
stack.append(1)
stack.append(2)
stack.append(3)
print(stack.pop())   # 3  O(1)
print(stack)         # [1, 2]

# insert at index 0 is O(n)
stack.insert(0, 0)
print(stack)         # [0, 1, 2]

Dilimleme Sözdizimi Açıklaması

Dilimleme lst[start:stop:step] biçiminde okunur ve stop konumundan hemen önce durur. Klasik yöntem şudur: -1 adımı, listeyi değiştirmeden tersine çevirir. Kod her biçimi adım adım gösterir.

a = [0, 1, 2, 3, 4, 5]
print(a[1:4])    # [1, 2, 3]
print(a[:3])     # [0, 1, 2]
print(a[3:])     # [3, 4, 5]
print(a[::2])    # [0, 2, 4]  every other
print(a[::-1])   # [5, 4, 3, 2, 1, 0]  reversed

Dilimleme Sığ Kopyalar Oluşturur

Yararlı ama şaşırtıcı bir nokta: dilimleme her zaman yeni bir liste oluşturur; bu nedenle dilimi düzenlemek özgün listeyi etkilemez. Ancak kopya sığdır; dolayısıyla iç içe listeler hâlâ paylaşılır. Buna dikkat edin.

original = [1, 2, 3]
copy = original[:]  # shallow copy
copy[0] = 99
print(original)  # [1, 2, 3]  unchanged

# Nested list pitfall
nested = [[1, 2], [3, 4]]
shallow = nested[:]
shallow[0][0] = 99
print(nested)    # [[99, 2], [3, 4]]  changed!

Demetler: Değiştirilemez Diziler

Bir demet parantez kullanır ve oluşturulduktan sonra değiştirilemez. Özetlenebilir olduğu için bir sözlüğün anahtarı veya kümenin üyesi olabilir; bu özellik ızgara problemlerindeki (satır, sütun) çiftleri için idealdir.

point = (3, 7)
print(point[0])   # 3

# Use as dict key
grid = {}
grid[(0, 0)] = 'start'
grid[(2, 3)] = 'end'
print(grid[(0, 0)])  # start

# Unpacking
x, y = point
print(x, y)  # 3 7

Demet Ne Zaman, Liste Ne Zaman Kullanılır

Verilerin değişmemesi gerekiyorsa demet, değişmesi gerekiyorsa liste seçin. Demetler ayrıca biraz daha az bellek kullanır; bu fark Dijkstra'daki büyük yığınların içinde birikir.

import sys
a_list  = [1, 2, 3, 4, 5]
a_tuple = (1, 2, 3, 4, 5)
print(sys.getsizeof(a_list))   # e.g. 104 bytes
print(sys.getsizeof(a_tuple))  # e.g. 80 bytes

# Tuple returned from function
def min_max(nums):
    return min(nums), max(nums)

lo, hi = min_max([3, 1, 4, 1, 5])
print(lo, hi)  # 1 5

Dilimlemede Bir Eksik-Bir Fazla Hataları

Bir eksik-bir fazla hataları dizi problemlerindeki en büyük tuzaktır. lst[i:j] ifadesinin tam olarak j-i öğe verdiğini unutmayın. Ortadan bölmek için sol taraf lst[:mid], sağ taraf ise lst[mid:] olur.

lst = [1, 2, 3, 4, 5, 6]
mid = len(lst) // 2    # 3
left  = lst[:mid]      # [1, 2, 3]
right = lst[mid:]      # [4, 5, 6]
print(left, right)

# How many elements?
print(len(lst[2:5]))   # 3  (indices 2,3,4)

Mülakatlarda Negatif Dizinler

Python'da negatif dizinler vardır: lst[-1] son öğeyi, lst[-2] ise sondan bir önceki öğeyi verir. lst[len(lst)-1] yerine lst[-1] kullanmayı tercih edin; mülakat yapanlar daha temiz olan bu biçimi fark eder.

s = 'abcde'
print(s[-1])    # 'e'
print(s[-3:])   # 'cde'
print(s[:-2])   # 'abc'  (all except last 2)

nums = [10, 20, 30, 40]
print(nums[-2])   # 30
nums[-1] = 99
print(nums)       # [10, 20, 30, 99]

Liste Sıralama ve Karşılaştırma

Python sıralaması Timsort kullanır (O(n log n), kararlıdır). lst.sort() listeyi yerinde değiştirir; sorted(lst) ise yeni bir liste döndürür. Özel bir sıra için anahtar seçeneğini kullanın. Koda bakın.

words = ['banana', 'fig', 'apple', 'kiwi']
words.sort(key=len)
print(words)  # ['fig', 'kiwi', 'apple', 'banana']

nums = [3, 1, 4, 1, 5]
print(sorted(nums, reverse=True))  # [5, 4, 3, 1, 1]
print(nums)  # unchanged: [3, 1, 4, 1, 5]

Yineleme Sırasında Listeleri Değiştirme

Klasik bir tuzak: liste üzerinde döngü kurarken asla öğe eklemeyin veya silmeyin; öğeleri atlayabilir ya da programı çökertebilirsiniz. Bunun yerine liste üreteciyle yeni bir liste oluşturun.

# WRONG — skips elements
nums = [1, 2, 3, 4, 5]
for n in nums:
    if n % 2 == 0:
        nums.remove(n)  # skips 4!
print(nums)  # [1, 3, 5]... but 4 got skipped? Actually removes 2,4

# CORRECT — build new list
nums = [1, 2, 3, 4, 5]
nums = [n for n in nums if n % 2 != 0]
print(nums)  # [1, 3, 5]

Döngülerde Demet Açma

Demet açma döngüleri daha temiz tutar: enumerate (dizin, değer) verir, zip ise iki listeyi birlikte dolaşır. *rest sözdizimi, kuyruğu kendi değişkenine alır. Koda bakın.

nums = [10, 20, 30]
for i, v in enumerate(nums):
    print(i, v)
# 0 10 / 1 20 / 2 30

a = [1, 2, 3]
b = ['x', 'y', 'z']
for x, y in zip(a, b):
    print(x, y)

first, *rest = [1, 2, 3, 4]
print(first, rest)  # 1 [2, 3, 4]

Kısa Kontrol

Kısa bir kontrol yapalım: Python listeleri, demetleri ve dilimleme hakkında neler öğrendiğinizi gösterin. Bunu yapabilirsiniz. 💪

Ders Özeti

Özet: listeler O(1) sürede append yapılabilen dinamik dizilerdir, dilimleme her zaman yeni bir kopya döndürür ve demetler değiştirilemez ve özetlenebilirdir. Sırada sözlükler ve kümeler var.

Sıkça Sorulan Sorular

“Listeler, Demetler ve Dilimleme” dersi ücretsiz mi?

Evet — “Listeler, Demetler ve Dilimleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Coding Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Coding Interview Prep kursu toplamda 4 dersten oluşur.

“Listeler, Demetler ve Dilimleme” dersinde ne öğreneceğim?

Klasik kodlama problemlerinden alınan uygulamalı örneklerle Python liste işlemlerinde, dilimleme söz diziminde ve demetlerin değişmezliğinde ustalaşın. Coding Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Coding Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Coding Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Listeler, Demetler ve Dilimleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Coding Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Coding Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Listeler, Demetler ve Dilimleme
  2. Python’da Sözlükler ve Kümeler
  3. Kapsamlı İfadeler ve Yerleşik İşlevler
  4. İşlevler, Kapanımlar ve Lambda
← Coding Interview Prep Sayfasına Dön