1. Listeler ve Liste Metotları

Listeler, Python’da birden fazla öğeyi bir arada tutmamızı sağlayan en temel veri yapılarından biridir.

Oluşturma ve İndeksleme

my_list = [1, 2, 3, 4, 5]
print(my_list[0])   # 1
print(my_list[-1])  # 5 (son eleman)

Temel Metotlar

my_list = [1, 2, 3]
my_list.append(4)              # [1, 2, 3, 4]
my_list.extend([5, 6])         # [1, 2, 3, 4, 5, 6]
my_list.insert(1, 10)          # [1, 10, 2, 3, 4, 5, 6]
my_list.remove(10)             # [1, 2, 3, 4, 5, 6]
my_list.pop(2)                 # [1, 2, 4, 5, 6]

Liste Dilimleme (Slicing)

my_list = [1, 2, 3, 4, 5, 6]
sliced = my_list[2:5]
print(sliced)  # [3, 4, 5]

List Comprehension

Liste oluşturmanın kısa ve etkili bir yoludur:

squares = [x**2 for x in range(5)]
print(squares)  # [0, 1, 4, 9, 16]

Çok Boyutlu Listeler

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]
print(matrix[1][2])  # 6

2. Tuple ve Set

Tuple (Demet)

Tuple değiştirilemez (immutable) bir veri yapısıdır. Bir kez oluşturulduktan sonra elemanları değiştirilemez.

my_tuple = (1, 2, 3)
print(my_tuple[0])  # 1

Set (Küme)

Setler, benzersiz elemanları tutan sırasız yapılardır.

my_set = {1, 2, 3, 4}
my_set.add(5)
print(my_set)  # {1, 2, 3, 4, 5}

Set Operatörleri

set1 = {1, 2, 3}
set2 = {3, 4, 5}

print(set1.union(set2))         # {1, 2, 3, 4, 5}  — birleşim
print(set1.intersection(set2))  # {3}              — kesişim
print(set1.difference(set2))    # {1, 2}           — fark

Frozen Set

Değiştirilemeyen set türüdür:

frozen_set = frozenset([1, 2, 3, 4])
# frozen_set.add(5)  # Hata: değiştirilemez

3. Dictionary (Sözlük)

Anahtar-değer çiftlerinden oluşan veri yapısıdır.

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
print(my_dict['name'])  # Alice

Dictionary Metotları

print(my_dict.keys())    # dict_keys(['name', 'age', 'city'])
print(my_dict.values())  # dict_values(['Alice', 25, 'New York'])
print(my_dict.items())   # dict_items([('name', 'Alice'), ('age', 25), ...])

İç İçe Dictionary

nested_dict = {
    'user1': {'name': 'Alice', 'age': 25},
    'user2': {'name': 'Bob', 'age': 30},
}
print(nested_dict['user1']['name'])  # Alice

Dictionary Comprehension

squares_dict = {x: x**2 for x in range(5)}
print(squares_dict)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

4. Fonksiyonlar

Fonksiyonlar, bir işi gerçekleştirmek için bir araya getirilmiş kod bloklarıdır.

Tanımlama ve Çağırma

def greet(name):
    return f"Hello, {name}!"

print(greet("Python"))  # Hello, Python!

Parametre Türleri (positional, keyword, default)

def my_function(a, b=2, c=3):
    return a + b + c

print(my_function(1))           # 6 — b ve c varsayılan
print(my_function(1, b=5))      # 9 — b'nin değeri 5
print(my_function(1, c=10))     # 13

Lambda Fonksiyonları

Tek satırlık, anonim fonksiyonlardır:

double = lambda x: x * 2
print(double(5))  # 10

Recursive (Özyinelemeli) Fonksiyonlar

def factorial(n):
    if n == 1:
        return 1
    return n * factorial(n - 1)

print(factorial(5))  # 120

5. Modüller ve Paketler

Built-in Modüller

import math
print(math.sqrt(16))  # 4.0

import random
print(random.randint(1, 10))  # 1-10 arasında rastgele

import datetime
print(datetime.datetime.now())  # Şu anki tarih ve saat

Import Yöntemleri

from math import pi
print(pi)  # 3.141592653589793

import math as m
print(m.sqrt(25))  # 5.0

Kendi Modülünü Oluştur

mymodule.py:

def greet(name):
    return f"Hello, {name}!"

main.py:

import mymodule
print(mymodule.greet("Python"))

pip ile Paket Yükleme

pip install requests
import requests

response = requests.get('https://api.github.com')
print(response.status_code)  # 200

Profesyonel İpuçları

  1. List comprehension kullanarak hızlı bir şekilde yeni listeler oluşturabilir, karmaşık veri dönüşümlerini sadeleştirebilirsiniz
  2. Lambda fonksiyonları kısa ve basit işlemler için idealdir, daha karmaşık fonksiyonlar için klasik tanımı kullanın
  3. Set veri yapısı, listeye göre çok daha hızlı eleman arama sağlar — büyük veri kümelerinde set kullanmayı düşünün
  4. Modüler programlama ile kodu organize hale getirebilir, yeniden kullanılabilir parçalar oluşturabilirsiniz

Pekiştirme Soruları

  1. Bir liste oluşturun ve listenin ilk ve son elemanını yazdırın
  2. Tuple ve set arasındaki temel farklar nelerdir? Bir örnekle açıklayın
  3. lambda fonksiyonları ne zaman kullanılır? Bir örnek yazın
  4. İki set arasında fark işlemi nasıl yapılır? Kod ile gösterin
  5. İç içe dictionary oluşturun ve içindeki bir değere erişin
  6. Kendi modülünüzü yazıp başka bir dosyadan import edip kullanın

Günün Özeti

Bugün liste, tuple, set, dictionary, fonksiyonlar, modüller ve paketler hakkında bilgi sahibi olduk. Bunlar Python’da günlük olarak kullanacağınız temel yapılar.

Yarın Gün 3’te dosya işlemleri, hata yönetimi ve OOP temellerine geçeceğiz.