[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-python-veri-yapilari-listeler-sozlukler-ve-setlerle-pratik-ornekler":3},{"dataItem":4,"heading":36,"metaData":38,"schema":81},["Reactive",5],{"id":6,"title":7,"summary":8,"content":9,"seo_title":10,"seo_description":11,"seo_keywords":12,"slug":13,"createdAt":14,"updatedAt":14,"blog_categories":15,"authors":19,"image":24,"thumb":25,"image_webp":26,"thumb_webp":27,"rating":28,"heading_title":7,"heading_sub_title":17,"readingTime":29,"url":34,"comments":35,"meta_cover":24},21717,"Python Veri Yapıları: Listeler, Sözlükler ve Setlerle Pratik Örnekler","Bu rehber, Python’daki list, dict ve set veri yapılarını kısa tanımlar ve çalıştırılabilir örneklerle açıklar. List/dict/set seçimini kolaylaştıran bir karar özeti, comprehension örnekleri ve mutable–immutable farkının pratik etkileri de yer alır.","\u003Ch2>Python’da veri yapıları neden önemli?\u003C/h2>\n\u003Cp>Python’da aynı problemi birden fazla şekilde çözebilirsiniz; çoğu zaman farkı yaratan şey \u003Cem>hangi veri yapısını seçtiğiniz\u003C/em> olur. Listeler (list), sözlükler (dict) ve setler (set) günlük geliştirme işlerinde en sık karşınıza çıkan üç temel yerleşik (built-in) koleksiyondur. Bu yazıda her birini kopyalayıp çalıştırabileceğiniz kısa örneklerle ele alacağız.\u003C/p>\n\u003Cp>Davranış ve metotları doğrulamak için resmi dokümantasyon iyi bir başlangıçtır: \u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">Built-in Types (stdtypes)\u003C/a> ve \u003Ca href=\"https://docs.python.org/3/tutorial/datastructures.html\">Python Tutorial: Data Structures\u003C/a>.\u003C/p>\n\n\u003Chr>\n\n\u003Ch2>Hızlı karşılaştırma: list vs dict vs set\u003C/h2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Tip\u003C/th>\n\u003Cth>Ne için ideal?\u003C/th>\n\u003Cth>Sıralı mı?\u003C/th>\n\u003Cth>Tekrara izin verir mi?\u003C/th>\n\u003Cth>Değiştirilebilir mi (mutable)?\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>list\u003C/strong>\u003C/td>\n\u003Ctd>Sıralı koleksiyon, indeksle erişim\u003C/td>\n\u003Ctd>Evet\u003C/td>\n\u003Ctd>Evet\u003C/td>\n\u003Ctd>Evet\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>dict\u003C/strong>\u003C/td>\n\u003Ctd>Anahtar → değer eşlemesi\u003C/td>\n\u003Ctd>\u003Cstrong>Python 3.7+:\u003C/strong> eklenme sırası dil seviyesinde garantidir (\u003Cstrong>3.6:\u003C/strong> CPython ayrıntısı)\u003C/td>\n\u003Ctd>Anahtarlar benzersizdir\u003C/td>\n\u003Ctd>Evet\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>set\u003C/strong>\u003C/td>\n\u003Ctd>Benzersiz elemanlar, küme işlemleri\u003C/td>\n\u003Ctd>Hayır (sırasız)\u003C/td>\n\u003Ctd>Hayır\u003C/td>\n\u003Ctd>Evet\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\n\u003Cp>Özelliklerin ayrıntıları için resmi referans: \u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">Python 3 stdtypes\u003C/a>.\u003C/p>\n\n\u003Chr>\n\n\u003Ch2>1) Listeler (list): sıralı ve değiştirilebilir koleksiyon\u003C/h2>\n\u003Cp>Liste, elemanların sırasını koruyan ve içerik üzerinde yerinde (in-place) değişiklik yapabildiğiniz bir koleksiyondur. İndeksleme ve dilimleme (slicing) günlük kullanımın temel parçalarıdır. Detaylar için: \u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">stdtypes: list\u003C/a> ve \u003Ca href=\"https://docs.python.org/3/tutorial/datastructures.html\">Tutorial: Data Structures\u003C/a>.\u003C/p>\n\n\u003Ch3>Liste oluşturma, indeksleme, dilimleme\u003C/h3>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Liste oluşturma, negatif indeks ve slicing.\u003C/p>\n\u003Cblockquote>\n# Oluşturma\u003Cbr>\nnums = [10, 20, 30]\u003Cbr>\nwords = list((\"hello\", \"python\"))\u003Cbr>\u003Cbr>\n# İndeksleme\u003Cbr>\nfirst = nums[0]        # 10\u003Cbr>\nlast = nums[-1]        # 30\u003Cbr>\u003Cbr>\n# Dilimleme (slicing)\u003Cbr>\nsubset = nums[0:2]     # [10, 20]\u003Cbr>\ncopy_like = nums[:]    # sığ kopya (shallow copy)\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Çıktı/Notlar:\u003C/strong> \u003Cem>nums[:]\u003C/em> yeni bir liste üretir; ancak iç içe (nested) yapılar varsa bu kopya “sığ” kalır.\u003C/p>\n\n\u003Ch3>Sık kullanılan liste metotları\u003C/h3>\n\u003Cp>Gündelik işlerde en çok kullanılanlar: \u003Cstrong>append\u003C/strong>, \u003Cstrong>extend\u003C/strong>, \u003Cstrong>insert\u003C/strong>, \u003Cstrong>pop\u003C/strong>, \u003Cstrong>remove\u003C/strong>, \u003Cstrong>sort\u003C/strong>, \u003Cstrong>reverse\u003C/strong>, \u003Cstrong>copy\u003C/strong>. Resmi metot listesi: \u003Ca href=\"https://docs.python.org/3/tutorial/datastructures.html\">Data Structures\u003C/a>.\u003C/p>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Ekleme/çıkarma ve yerinde sıralama.\u003C/p>\n\u003Cblockquote>\nitems = [\"a\", \"b\"]\u003Cbr>\nitems.append(\"c\")\u003Cbr>\nitems.extend([\"d\", \"e\"])\u003Cbr>\nitems.insert(1, \"X\")\u003Cbr>\u003Cbr>\nlast = items.pop()     # \"e\"\u003Cbr>\nitems.remove(\"X\")     # ilk eşleşeni siler\u003Cbr>\u003Cbr>\nitems.sort()           # yerinde sıralar\u003Cbr>\nitems.reverse()        # yerinde ters çevirir\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Çıktı/Notlar:\u003C/strong> \u003Cem>sort()\u003C/em> listeyi yerinde değiştirir ve \u003Cem>None\u003C/em> döndürür. Sıralanmış bir kopya için \u003Cem>sorted(items)\u003C/em> kullanın.\u003C/p>\n\n\u003Ch3>List comprehension: kısa ve okunabilir dönüşümler\u003C/h3>\n\u003Cp>\u003Cem>List comprehension\u003C/em>, bir listeyi dönüştürmenin/filtrelemenin kompakt bir yoludur. Örnekler için: \u003Ca href=\"https://docs.python.org/3/tutorial/datastructures.html\">Tutorial: Data Structures\u003C/a>. Okunabilirlik ve pratik notlar için: \u003Ca href=\"https://realpython.com/list-comprehension-python/\">Real Python — List Comprehensions\u003C/a>.\u003C/p>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Dönüştürme, filtreleme, birlikte kullanım.\u003C/p>\n\u003Cblockquote>\n# 1) Dönüştürme: her elemanın karesi\u003Cbr>\nsquares = [x * x for x in range(6)]\u003Cbr>\u003Cbr>\n# 2) Filtreleme: sadece çift sayılar\u003Cbr>\nevens = [x for x in range(10) if x % 2 == 0]\u003Cbr>\u003Cbr>\n# 3) Hem filtre hem dönüşüm\u003Cbr>\nlabels = [f\"user_{i}\" for i in range(1, 6) if i != 3]\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Beklenen sonuç:\u003C/strong> \u003Cem>squares\u003C/em> 0–25 arası kareleri, \u003Cem>evens\u003C/em> çiftleri, \u003Cem>labels\u003C/em> ise “user_3” hariç etiketleri üretir.\u003C/p>\n\u003Cp>\u003Cstrong>Not:\u003C/strong> Performans hakkında genelleme yaparken dikkatli olun: bazı durumlarda list comprehension pratikte hızlı olabilir; ancak sonuçlar Python sürümüne, veri boyutuna ve iç işlemlere göre değişir. En sağlıklısı, kendi ortamınızda küçük bir \u003Cem>timeit\u003C/em> deneyi yapmaktır.\u003C/p>\n\n\u003Ch3>Listelerde yaygın tuzak: paylaşılan (aliased) referanslar\u003C/h3>\n\u003Cp>Listeler mutable olduğu için aynı listeyi birden fazla yere “paylaştırmak” beklenmedik yan etkiler yaratabilir. Bu, özellikle atama/kopyalama yaparken önem kazanır. Arka plan için: \u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">stdtypes\u003C/a> ve pratik notlar için \u003Ca href=\"https://realpython.com/python-data-structures/\">Real Python\u003C/a>.\u003C/p>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Aynı listeyi iki değişkenin işaret etmesi (aliasing) ve \u003Cem>copy()\u003C/em> ile yeni liste almak.\u003C/p>\n\u003Cblockquote>\na = [1, 2, 3]\u003Cbr>\nb = a          # b ve a aynı listeyi işaret eder\u003Cbr>\nb.append(4)\u003Cbr>\n# a artık [1, 2, 3, 4]\u003Cbr>\u003Cbr>\n# Yeni liste nesnesi (sığ kopya):\u003Cbr>\nc = a.copy()\u003Cbr>\nc.append(5)\u003Cbr>\n# a değişmez, c değişir\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Çıktı/Notlar:\u003C/strong> \u003Cem>b = a\u003C/em> bir kopya üretmez; aynı nesne üzerinde çalışırsınız. Kopya gerekiyorsa \u003Cem>copy()\u003C/em> ya da dilimleme gibi yaklaşımları bilinçli kullanın.\u003C/p>\n\n\u003Chr>\n\n\u003Ch2>2) Sözlükler (dict): anahtar → değer haritaları\u003C/h2>\n\u003Cp>\u003Cstrong>dict\u003C/strong>, bir anahtarın (key) bir değere (value) karşılık geldiği haritalama tipidir. Birçok senaryoda (ayarlar, sayımlar, özellikler, önbellekler) doğal seçimdir. Ana referans: \u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">stdtypes: dict\u003C/a>.\u003C/p>\n\u003Cp>\u003Cstrong>Sıra notu (sürüm vurgusu):\u003C/strong> Dict’in eklenme sırasını koruması \u003Cstrong>Python 3.7+\u003C/strong> için dil seviyesinde garantidir; \u003Cstrong>Python 3.6\u003C/strong> için bu davranış CPython’ın bir uygulama ayrıntısı olarak görülür. Detaylar için: \u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">stdtypes\u003C/a>.\u003C/p>\n\n\u003Ch3>Dict oluşturma ve güvenli okuma\u003C/h3>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> \u003Cem>[]\u003C/em> ile okuma ve \u003Cem>get()\u003C/em> ile varsayılan değer.\u003C/p>\n\u003Cblockquote>\nuser = {\"id\": 7, \"name\": \"Ada\"}\u003Cbr>\u003Cbr>\n# Doğrudan erişim (anahtar yoksa KeyError oluşur):\u003Cbr>\nname = user[\"name\"]\u003Cbr>\u003Cbr>\n# get() ile varsayılan değer:\u003Cbr>\nage = user.get(\"age\", 0)   # age yoksa 0 döner\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Çıktı/Notlar:\u003C/strong> Dışarıdan gelen/veri kalitesi belirsiz sözlüklerde \u003Cem>get()\u003C/em> ile okumak, kontrol akışını sadeleştirebilir.\u003C/p>\n\n\u003Ch3>İterasyon: keys(), values(), items()\u003C/h3>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Anahtar/değer/çiftler üzerinde dolaşma.\u003C/p>\n\u003Cblockquote>\nsettings = {\"theme\": \"dark\", \"lang\": \"tr\"}\u003Cbr>\u003Cbr>\nfor key in settings.keys():\u003Cbr>\n&nbsp;&nbsp;&nbsp;&nbsp;print(key)\u003Cbr>\u003Cbr>\nfor value in settings.values():\u003Cbr>\n&nbsp;&nbsp;&nbsp;&nbsp;print(value)\u003Cbr>\u003Cbr>\nfor key, value in settings.items():\u003Cbr>\n&nbsp;&nbsp;&nbsp;&nbsp;print(key, value)\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Çıktı/Notlar:\u003C/strong> Pratikte çoğu zaman \u003Cem>for key, value in d.items()\u003C/em> okunabilir bir varsayılandır.\u003C/p>\n\n\u003Ch3>setdefault(): “yoksa oluştur” desenleri\u003C/h3>\n\u003Cp>\u003Cem>setdefault()\u003C/em> özellikle gruplama ve liste biriktirme işlerinde kullanışlıdır. Metot davranışı için: \u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">stdtypes: dict\u003C/a>.\u003C/p>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Uzunluğa göre gruplama (liste biriktirme).\u003C/p>\n\u003Cblockquote>\nwords = [\"hi\", \"python\", \"data\", \"set\"]\u003Cbr>\ngroups = {}\u003Cbr>\nfor w in words:\u003Cbr>\n&nbsp;&nbsp;&nbsp;&nbsp;groups.setdefault(len(w), []).append(w)\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Beklenen sonuç:\u003C/strong> \u003Cem>groups\u003C/em> içinde anahtarlar uzunluk, değerler o uzunluktaki kelimeler listesi olur (ör. 4 → [\"data\", \"set\"]).\u003C/p>\n\u003Cp>Alternatif olarak \u003Cem>collections.defaultdict\u003C/em> da tercih edilebilir; ancak bu yazı yerleşik tiplerle odakta kalır.\u003C/p>\n\n\u003Ch3>Dict comprehension: hızlı dönüştürmeler\u003C/h3>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Sayıların karelerini anahtar-değer olarak üretme.\u003C/p>\n\u003Cblockquote>\nd = {x: x * x for x in range(5)}\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Beklenen sonuç:\u003C/strong> 0→0, 1→1, 2→4 … şeklinde bir eşleme oluşur.\u003C/p>\n\n\u003Ch3>Önemli kural: dict anahtarları hashable olmalı\u003C/h3>\n\u003Cp>dict anahtarı olarak kullanılan nesneler “hashable” olmalıdır. Bu yüzden list veya dict gibi mutable tipler anahtar olamaz; tuple gibi immutable tipler çoğu durumda uygundur. Kuralın arka planı için: \u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">stdtypes\u003C/a>.\u003C/p>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Uygun/uygunsuz anahtar örnekleri ve bir kenar durum.\u003C/p>\n\u003Cblockquote>\n# Uygun değil: list hashable değildir (anahtar olamaz)\u003Cbr>\n# d1 = {[1, 2]: \"x\"}\u003Cbr>\u003Cbr>\n# Uygun: tuple çoğu durumda anahtar olabilir\u003Cbr>\nd2 = {(1, 2): \"x\"}\u003Cbr>\u003Cbr>\n# Kenar durum: tuple immutable olsa da içinde hashable olmayan öğe varsa olmaz\u003Cbr>\n# d3 = {([1, 2], 3): \"x\"}\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Çıktı/Notlar:\u003C/strong> Böyle bir ihtiyaçta veriyi tamamen immutable bir temsile dönüştürmek (ör. sadece sayı/string içeren tuple) veya farklı bir anahtar stratejisi seçmek gerekir.\u003C/p>\n\n\u003Chr>\n\n\u003Ch2>3) Setler (set): benzersiz elemanlar ve küme işlemleri\u003C/h2>\n\u003Cp>\u003Cstrong>set\u003C/strong>, benzersiz öğeleri tutan ve matematiksel küme işlemlerini destekleyen bir koleksiyondur. Tanım ve operasyonlar için: \u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">stdtypes: set\u003C/a> ve eğitim dokümanı: \u003Ca href=\"https://docs.python.org/3/tutorial/datastructures.html\">Python Tutorial — Data Structures\u003C/a>.\u003C/p>\n\n\u003Ch3>Set oluşturma ve üyelik testi\u003C/h3>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Tekrar eklemenin etkisi ve üyelik kontrolü.\u003C/p>\n\u003Cblockquote>\nnums = {1, 2, 3}\u003Cbr>\nnums.add(3)      # zaten varsa küme aynı kalır\u003Cbr>\nnums.add(4)      # {1, 2, 3, 4}\u003Cbr>\u003Cbr>\nexists = 2 in nums   # True\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Çıktı/Notlar:\u003C/strong> Üyelik testinde set/dict çoğu durumda pratiktir; büyük veri kararlarında ölçüm yapmak iyi bir alışkanlıktır.\u003C/p>\n\n\u003Ch3>Küme operasyonları: union, intersection, difference\u003C/h3>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Birleşim, kesişim, fark ve simetrik fark.\u003C/p>\n\u003Cblockquote>\na = {1, 2, 3, 4}\u003Cbr>\nb = {3, 4, 5}\u003Cbr>\u003Cbr>\nunion = a | b\u003Cbr>\nintersect = a & b\u003Cbr>\ndiff = a - b\u003Cbr>\nsym_diff = a ^ b\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Beklenen sonuç:\u003C/strong> \u003Cem>union\u003C/em> {1,2,3,4,5}, \u003Cem>intersect\u003C/em> {3,4}, \u003Cem>diff\u003C/em> {1,2}, \u003Cem>sym_diff\u003C/em> {1,2,5}. (Set çıktılarında sıra garantisi olmadığını unutmayın.)\u003C/p>\n\u003Cp>Aynı işlemleri metotlarla da yapabilirsiniz: \u003Cem>a.union(b)\u003C/em>, \u003Cem>a.intersection(b)\u003C/em>, \u003Cem>a.difference(b)\u003C/em>, \u003Cem>a.symmetric_difference(b)\u003C/em>. Ayrıntı için: \u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">stdtypes: set\u003C/a>.\u003C/p>\n\n\u003Ch3>Set comprehension ve frozenset\u003C/h3>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Tekilleştirme ve immutable set (frozenset).\u003C/p>\n\u003Cblockquote>\n# Set comprehension: benzersiz kareler\u003Cbr>\nsq = {x * x for x in [1, 2, 2, 3]}\u003Cbr>\u003Cbr>\n# Değiştirilemez set: frozenset\u003Cbr>\nfs = frozenset([1, 2, 3])\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Çıktı/Notlar:\u003C/strong> \u003Cem>frozenset\u003C/em> immutable olduğu için bazı senaryolarda dict anahtarı veya başka setlerin elemanı olarak kullanılabilir. Tanım için: \u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">stdtypes\u003C/a>.\u003C/p>\n\n\u003Chr>\n\n\u003Ch2>Mutable vs immutable: pratikte neyi değiştirir?\u003C/h2>\n\u003Cp>Python’da bazı tipler değiştirilebilir (mutable), bazıları değiştirilemez (immutable) davranır. Bu fark iki yerde özellikle hissedilir:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Fonksiyonlara parametre geçerken\u003C/strong>: Mutable nesne üzerinde yerinde değişiklik yapılırsa, çağıran taraf da bu değişimi görür.\u003C/li>\n\u003Cli>\u003Cstrong>Hashing gereken yerlerde\u003C/strong>: dict anahtarı veya set elemanı olmak için hashable bir temsil gerekir (çoğu durumda immutable tipler).\u003C/li>\n\u003C/ul>\n\u003Cp>Resmi davranışlar için: \u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">stdtypes\u003C/a>. Pratik yorumlar için: \u003Ca href=\"https://realpython.com/python-data-structures/\">Real Python\u003C/a>.\u003C/p>\n\n\u003Ch3>Fonksiyonlarda yan etkiyi kontrol etme\u003C/h3>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Listeyi yerinde değiştiren fonksiyonun çağırana etkisi.\u003C/p>\n\u003Cblockquote>\ndef add_tag(tags, tag):\u003Cbr>\n&nbsp;&nbsp;&nbsp;&nbsp;tags.append(tag)   # yerinde değişiklik\u003Cbr>\u003Cbr>\nmy_tags = [\"python\"]\u003Cbr>\nadd_tag(my_tags, \"data\")\u003Cbr>\n# my_tags artık [\"python\", \"data\"]\u003Cbr>\n\u003C/blockquote>\n\u003Cp>Eğer yan etki istemiyorsanız, fonksiyon içinde kopya ile çalışabilirsiniz:\u003C/p>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Kopya alarak yeni liste döndürme.\u003C/p>\n\u003Cblockquote>\ndef add_tag_safely(tags, tag):\u003Cbr>\n&nbsp;&nbsp;&nbsp;&nbsp;new_tags = tags.copy()\u003Cbr>\n&nbsp;&nbsp;&nbsp;&nbsp;new_tags.append(tag)\u003Cbr>\n&nbsp;&nbsp;&nbsp;&nbsp;return new_tags\u003Cbr>\u003Cbr>\nmy_tags = [\"python\"]\u003Cbr>\nresult = add_tag_safely(my_tags, \"data\")\u003Cbr>\n# my_tags değişmez, result yeni listedir\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Çıktı/Notlar:\u003C/strong> İç içe yapılar varsa sığ kopya her durumu çözmeyebilir; böyle senaryolarda veri modelini sade tutmak veya farklı bir yaklaşım seçmek gerekebilir.\u003C/p>\n\n\u003Chr>\n\n\u003Ch2>Ne zaman hangisini seçmeliyim? (Mini karar rehberi)\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Sıra önemliyse\u003C/strong> ve aynı eleman birden fazla kez bulunabiliyorsa: \u003Cstrong>list\u003C/strong>\u003C/li>\n\u003Cli>\u003Cstrong>Bir şeyi anahtarla bulmak\u003C/strong> istiyorsanız (id → kayıt, isim → değer): \u003Cstrong>dict\u003C/strong>\u003C/li>\n\u003Cli>\u003Cstrong>Benzersiz elemanlar\u003C/strong> ve küme işlemleri (kesişim/fark) istiyorsanız: \u003Cstrong>set\u003C/strong>\u003C/li>\n\u003C/ul>\n\n\u003Ch3>Kısa kontrol listesi\u003C/h3>\n\u003Cul>\n\u003Cli>Listelerde: kopya mı istiyorsunuz, yoksa aynı liste üzerinde mi çalışıyorsunuz? (Aliasing riskini düşünün.)\u003C/li>\n\u003Cli>Dict’te: Anahtarınız gerçekten hashable mı?\u003C/li>\n\u003Cli>Set’te: Çıktı sırası üzerine mantık kurmayın; set sırasızdır.\u003C/li>\n\u003Cli>Comprehension kullanırken: Okunabilirlik bozuluyorsa basit bir \u003Cem>for\u003C/em> döngüsü daha iyi olabilir.\u003C/li>\n\u003C/ul>\n\n\u003Ch2>Basit bir timeit iskeleti (isteğe bağlı)\u003C/h2>\n\u003Cp>Aşağıdaki iskelet, kendi ortamınızda küçük karşılaştırmalar yapmak için bir başlangıçtır. Sonuçlar; Python sürümü, işletim sistemi ve veri boyutuna göre değişebilir.\u003C/p>\n\u003Cp>\u003Cstrong>Ne gösterir:\u003C/strong> Belirli bir ifadeyi çok kez çalıştırıp süre ölçümü.\u003C/p>\n\u003Cblockquote>\nimport timeit\u003Cbr>\u003Cbr>\nsetup = \"data = list(range(10000))\"\u003Cbr>\nstmt = \"[x * 2 for x in data]\"\u003Cbr>\nprint(timeit.timeit(stmt=stmt, setup=setup, number=200))\u003Cbr>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Not:\u003C/strong> Gerçek hayattaki iş yükünüzü temsil eden veri ve işlemlerle ölçüm yapmaya çalışın.\u003C/p>\n\n\u003Chr>\n\n\u003Ch2>Sonuç\u003C/h2>\n\u003Cp>List, dict ve set; Python’da hem öğrenmesi kolay hem de doğru kullanıldığında üretkenliği artıran temel veri yapılarıdır. Listeler sıralı dönüşümler için, dict’ler anahtar-temelli erişim için, set’ler benzersizlik ve küme işlemleri için güçlüdür. Mutable vs immutable farkını akılda tutarak kopyalama/yan etki konularını yönetebilir, comprehension’ları da okunabilirlik çizgisini aşmadan kullanabilirsiniz.\u003C/p>\n\n\u003Ch3>Kaynaklar ve ileri okuma\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">Python Docs — Built-in Types (stdtypes)\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://docs.python.org/3/tutorial/datastructures.html\">Python Tutorial — Data Structures\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://realpython.com/list-comprehension-python/\">Real Python — List Comprehensions\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://realpython.com/python-data-structures/\">Real Python — Python Data Structures (mutable/immutable pratikleri)\u003C/a>\u003C/li>\n\u003C/ul>\n\n\u003Ch4>Sources (resmi dokümanlar)\u003C/h4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://docs.python.org/3/library/stdtypes.html\">Built-in Types — Python 3 Documentation (stdtypes)\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://docs.python.org/3/tutorial/datastructures.html\">The Python Tutorial — Data Structures\u003C/a>\u003C/li>\n\u003C/ul>","Python Veri Yapıları: List, Dict ve Set (Örnekli Rehber)","Python’da list, dict ve set veri yapılarını pratik örneklerle öğrenin: metotlar, comprehension, set işlemleri ve mutable/immutable farkı.","python veri yapıları, python list, python dict, python set, list comprehension, dict get, dict items keys values, set union intersection difference, mutable vs immutable python, frozenset","python-veri-yapilari-listeler-sozlukler-ve-setlerle-pratik-ornekler","2026-03-12T10:31:37.000Z",{"id":16,"title":17,"slug":18},205,"Python Veri Yapıları","python-veri-yapilari",{"id":20,"name":21,"nickname":22,"slug":23},91,"Mert Kılıçoğlu","CodeCraftsman","mert-kilicoglu","/media/blog/9ab5c18fd9014a9460d5e66932cd545b.jpg","/media/blog/9ab5c18fd9014a9460d5e66932cd545b_thumb.jpg","/media/blog/9ab5c18fd9014a9460d5e66932cd545b.webp","/media/blog/9ab5c18fd9014a9460d5e66932cd545b_thumb.webp",null,{"minutes":30,"wordCount":31,"imageCount":32,"formatted":33},8,1585,0,"8 dk okuma süresi","/blog/python-veri-yapilari/python-veri-yapilari-listeler-sozlukler-ve-setlerle-pratik-ornekler",[],["Reactive",37],{"title":7,"subTitle":17,"image":24},["Reactive",39],{"title":10,"meta":40,"link":75},[41,43,45,48,51,54,57,60,63,66,69,71,73],{"hid":42,"name":42,"content":11},"description",{"hid":44,"name":44,"content":12},"keywords",{"hid":46,"name":46,"content":47},"author","Başlangıç Seviyesi Kod & Snippet Rehberi",{"hid":49,"name":49,"content":50},"robots","index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1",{"hid":52,"property":52,"content":53},"og:type","website",{"hid":55,"property":55,"content":56},"og:title","Başlangıç Kod & Snippet Rehberi | KodÖğreniyorum",{"hid":58,"property":58,"content":59},"og:description","Yeni başlayanlara yönelik kısa kod örnekleri, snippet'ler ve adım adım alıştırmalar. Hızlı uygulamalarla temel programlama mantığını pekiştir.",{"hid":61,"property":61,"content":62},"og:image","https://kodogreniyorum.com/media/blog/9ab5c18fd9014a9460d5e66932cd545b.jpg",{"hid":64,"property":64,"content":65},"og:url","https://kodogreniyorum.com/blog/python-veri-yapilari/python-veri-yapilari-listeler-sozlukler-ve-setlerle-pratik-ornekler",{"hid":67,"name":67,"content":68},"twitter:card","summary_large_image",{"hid":70,"name":70,"content":56},"twitter:title",{"hid":72,"name":72,"content":59},"twitter:description",{"hid":74,"name":74,"content":62},"twitter:image",[76,78],{"rel":77,"href":65},"canonical",{"rel":79,"href":80},"amphtml","https://amp.kodogreniyorum.com/blog/python-veri-yapilari/python-veri-yapilari-listeler-sozlukler-ve-setlerle-pratik-ornekler",["Reactive",82],{"@context":83,"@graph":84},"https://schema.org",[85,98],{"@type":86,"headline":10,"image":62,"author":87,"publisher":90,"datePublished":14,"dateModified":14,"mainEntityOfPage":96,"description":11},"BlogPosting",{"@type":88,"name":21,"url":89},"Person","https://kodogreniyorum.com/yazarlar/mert-kilicoglu",{"@type":91,"name":47,"logo":92},"Organization",{"@type":93,"url":94,"width":95,"height":95},"ImageObject","https://kodogreniyorum.com/img/icons/favicon.png",32,{"@type":97,"@id":65},"WebPage",{"@type":99,"itemListElement":100},"BreadcrumbList",[101,106,110,113],{"@type":102,"position":103,"name":104,"item":105},"ListItem",1,"Ana Sayfa","https://kodogreniyorum.com",{"@type":102,"position":107,"name":108,"item":109},2,"Blog","https://kodogreniyorum.com/blog",{"@type":102,"position":111,"name":17,"item":112},3,"https://kodogreniyorum.com/blog/python-veri-yapilari",{"@type":102,"position":114,"name":7,"item":65},4]