{"id":30466,"date":"2025-09-28T05:41:12","date_gmt":"2025-09-28T02:41:12","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=30466"},"modified":"2025-09-28T05:41:12","modified_gmt":"2025-09-28T02:41:12","slug":"pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/","title":{"rendered":"Python&#8217;da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>Python&#8217;da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber<\/h2>\n<p>Python, veri manip\u00fclasyonu i\u00e7in son derece g\u00fc\u00e7l\u00fc ve esnek bir programlama dilidir. Listeler, Python&#8217;daki en temel ve en s\u0131k kullan\u0131lan veri yap\u0131lar\u0131ndan biridir. \u00c7e\u015fitli veri tiplerini bar\u0131nd\u0131rabilir ve dinamik boyutlara sahiptirler. Ancak, veri toplama, i\u015fleme veya analiz s\u00fcre\u00e7lerinde, bir listede ayn\u0131 \u00f6\u011fenin birden fazla kez bulunmas\u0131 durumuyla s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131l\u0131r. Bu tekrarlanan \u00f6\u011feler, veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc bozabilir, performans sorunlar\u0131na yol a\u00e7abilir veya analiz sonu\u00e7lar\u0131n\u0131 yan\u0131lt\u0131c\u0131 hale getirebilir. \u00d6rne\u011fin, bir m\u00fc\u015fteri listesinde ayn\u0131 e-posta adresinin birden fazla kez yer almas\u0131, gereksiz bildirimlere veya hatal\u0131 analizlere neden olabilir. Benzer \u015fekilde, bir \u00fcr\u00fcn envanterinde ayn\u0131 \u00fcr\u00fcn kodunun defalarca g\u00f6r\u00fcnmesi, stok takibini zorla\u015ft\u0131rabilir.<\/p>\n<p>Bu nedenle, Python&#8217;da bir listeden tekrarlanan \u00f6\u011feleri kald\u0131rmak, veri temizli\u011fi ve optimizasyonun \u00f6nemli bir par\u00e7as\u0131d\u0131r. Bu makalede, Python&#8217;da bu i\u015flemi ger\u00e7ekle\u015ftirmek i\u00e7in mevcut olan \u00e7e\u015fitli y\u00f6ntemleri, bunlar\u0131n avantajlar\u0131n\u0131, dezavantajlar\u0131n\u0131, performans \u00f6zelliklerini ve hangi senaryolarda hangi y\u00f6ntemin tercih edilmesi gerekti\u011fini ayr\u0131nt\u0131l\u0131 bir \u015fekilde inceleyece\u011fiz. Hem basit ve h\u0131zl\u0131 \u00e7\u00f6z\u00fcmlerden hem de s\u0131ray\u0131 koruyan veya hash edilemeyen (unhashable) tiplerle ba\u015fa \u00e7\u0131kabilen daha geli\u015fmi\u015f tekniklerden bahsedece\u011fiz.<\/p>\n<h3>Giri\u015f: Neden Tekrarlanan \u00d6\u011feler Sorun Yarat\u0131r?<\/h3>\n<p>Python listeleri, elemanlar\u0131n eklenme s\u0131ras\u0131n\u0131 koruyan ve de\u011fi\u015ftirilebilir (mutable) koleksiyonlard\u0131r. Bu esneklik, listelerin \u00e7ok \u00e7e\u015fitli kullan\u0131m alanlar\u0131na sahip olmas\u0131n\u0131 sa\u011flar. Ancak, bu esneklik bazen veri kalitesi sorunlar\u0131n\u0131 da beraberinde getirebilir. Tekrarlanan \u00f6\u011feler, a\u015fa\u011f\u0131daki gibi \u00e7e\u015fitli sorunlara yol a\u00e7abilir:<\/p>\n<p>*   <strong>Veri B\u00fct\u00fcnl\u00fc\u011f\u00fc ve Do\u011fruluk:<\/strong> Bir veri setindeki tekrarlar, verinin do\u011frulu\u011funu ve g\u00fcvenilirli\u011fini azalt\u0131r. \u00d6rne\u011fin, bir anket sonucunda ayn\u0131 ki\u015finin birden fazla oy kullanmas\u0131 gibi durumlar.<br \/>\n*   <strong>Performans Kay\u0131plar\u0131:<\/strong> B\u00fcy\u00fck listelerde tekrarlanan \u00f6\u011felerin bulunmas\u0131, listeler \u00fczerinde yap\u0131lan arama, s\u0131ralama veya di\u011fer i\u015flemlerin daha uzun s\u00fcrmesine neden olabilir. Bellek kullan\u0131m\u0131 da gereksiz yere artar.<br \/>\n*   <strong>Yanl\u0131\u015f Analizler:<\/strong> \u0130statistiksel analizlerde veya raporlamada, her bir \u00f6\u011fenin benzersiz kabul edilmesi gereken durumlarda tekrarlar, sonu\u00e7lar\u0131 \u00e7arp\u0131tabilir. \u00d6rne\u011fin, benzersiz kullan\u0131c\u0131 say\u0131s\u0131n\u0131 hesaplarken tekrarlanan kullan\u0131c\u0131 kimlikleri yanl\u0131\u015f sonu\u00e7 verir.<br \/>\n*   <strong>Gereksiz \u0130\u015flemler:<\/strong> Bir listedeki her benzersiz \u00f6\u011fe i\u00e7in belirli bir i\u015flem yap\u0131lmas\u0131 gerekti\u011finde, tekrarlanan \u00f6\u011feler i\u00e7in ayn\u0131 i\u015flemin defalarca yap\u0131lmas\u0131, kaynak israf\u0131na neden olur.<\/p>\n<p>Bu nedenlerle, bir listedeki tekrarlanan \u00f6\u011feleri etkili bir \u015fekilde kald\u0131rmak, Python programlamas\u0131nda \u00f6nemli bir beceridir. \u015eimdi, bu i\u015flemi ger\u00e7ekle\u015ftirmek i\u00e7in kullanabilece\u011fimiz farkl\u0131 y\u00f6ntemlere ge\u00e7elim.<\/p>\n<h3>Temel Y\u00f6ntemler ve \u0130lk Yakla\u015f\u0131mlar<\/h3>\n<p>Python&#8217;da tekrarlanan \u00f6\u011feleri kald\u0131rmak i\u00e7in birka\u00e7 farkl\u0131 temel yakla\u015f\u0131m bulunmaktad\u0131r. Bu yakla\u015f\u0131mlar genellikle basitlikleri veya belirli senaryolardaki etkinlikleri nedeniyle tercih edilir.<\/p>\n<h4>1. set() Kullanarak Tekrarlanan \u00d6\u011feleri Kald\u0131rma (S\u0131ray\u0131 Korumaz)<\/h4>\n<p>Python&#8217;daki <code>set<\/code> (k\u00fcme) veri yap\u0131s\u0131, benzersiz \u00f6\u011felerden olu\u015fan, s\u0131ralanmam\u0131\u015f bir koleksiyondur. Bir liste veya ba\u015fka bir yinelenebilir (iterable) nesne bir <code>set<\/code>&#8216;e d\u00f6n\u00fc\u015ft\u00fcr\u00fcld\u00fc\u011f\u00fcnde, t\u00fcm tekrarlanan \u00f6\u011feler otomatik olarak kald\u0131r\u0131l\u0131r. Daha sonra, bu <code>set<\/code> tekrar bir listeye d\u00f6n\u00fc\u015ft\u00fcr\u00fclerek benzersiz \u00f6\u011felerden olu\u015fan bir liste elde edilebilir.<\/p>\n<p><strong>Nas\u0131l \u00c7al\u0131\u015f\u0131r:<\/strong><br \/>\n<code>set<\/code> veri yap\u0131s\u0131, elemanlar\u0131n hash de\u011ferlerini kullanarak h\u0131zl\u0131 bir \u015fekilde benzersizli\u011fi sa\u011flar. Bir \u00f6\u011fe <code>set<\/code>&#8216;e eklenmeye \u00e7al\u0131\u015f\u0131ld\u0131\u011f\u0131nda, hash de\u011feri hesaplan\u0131r ve bu hash de\u011feri <code>set<\/code> i\u00e7inde zaten mevcutsa \u00f6\u011fe eklenmez. Bu \u00f6zellik, <code>set<\/code>&#8216;i tekrarlanan \u00f6\u011feleri kald\u0131rmak i\u00e7in son derece verimli bir ara\u00e7 yapar.<\/p>\n<p><strong>Kullan\u0131m:<\/strong><\/p>\n<pre><code class=\"language-python\">my_list = [1, 2, 2, 3, 4, 4, 5, 1]\nunique_list = list(set(my_list))\nprint(unique_list) # \u00c7\u0131kt\u0131: [1, 2, 3, 4, 5] (S\u0131ra garanti de\u011fildir)<\/code><\/pre>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   <strong>Basitlik:<\/strong> Tek sat\u0131rl\u0131k bir kodla ger\u00e7ekle\u015ftirilebilir.<br \/>\n*   <strong>H\u0131z:<\/strong> Hashable (hash edilebilir) \u00f6\u011feler i\u00e7in ortalama zaman karma\u015f\u0131kl\u0131\u011f\u0131 O(n)&#8217;dir. Bu, b\u00fcy\u00fck listeler i\u00e7in \u00e7ok h\u0131zl\u0131 oldu\u011fu anlam\u0131na gelir.<br \/>\n*   <strong>Okunabilirlik:<\/strong> Niyeti a\u00e7\u0131k\u00e7a belirtir.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   <strong>S\u0131ra Kayb\u0131:<\/strong> <code>set<\/code>&#8216;ler s\u0131ralanmam\u0131\u015f koleksiyonlar oldu\u011fu i\u00e7in, orijinal listedeki \u00f6\u011felerin eklenme s\u0131ras\u0131 kaybedilir. Elde edilen listedeki \u00f6\u011felerin s\u0131ras\u0131 her \u00e7al\u0131\u015ft\u0131rmada farkl\u0131l\u0131k g\u00f6sterebilir veya tahmin edilemez olabilir.<br \/>\n*   <strong>Hashable Olmayan Tiplerle \u00c7al\u0131\u015fmama:<\/strong> <code>set<\/code> \u00f6\u011felerinin hash edilebilir olmas\u0131 gerekir. Bu, listeler, s\u00f6zl\u00fckler veya \u00f6zel olarak hash metodu tan\u0131mlanmam\u0131\u015f nesneler gibi de\u011fi\u015ftirilebilir (mutable) tiplerle do\u011frudan \u00e7al\u0131\u015famaz.<\/p>\n<h4>2. D\u00f6ng\u00fc ve Yeni Bir Liste Kullanarak Tekrarlanan \u00d6\u011feleri Kald\u0131rma (S\u0131ray\u0131 Korur, Daha Az Verimli)<\/h4>\n<p>Bu y\u00f6ntem, orijinal listedeki \u00f6\u011felerin s\u0131ras\u0131n\u0131 korumak istedi\u011fimizde kullanabilece\u011fimiz daha manuel bir yakla\u015f\u0131md\u0131r. Bo\u015f bir liste olu\u015fturulur ve orijinal listedeki her \u00f6\u011fe s\u0131rayla kontrol edilir. E\u011fer \u00f6\u011fe yeni listede zaten yoksa, yeni listeye eklenir.<\/p>\n<p><strong>Nas\u0131l \u00c7al\u0131\u015f\u0131r:<\/strong><br \/>\nOrijinal listedeki her \u00f6\u011fe \u00fczerinde bir d\u00f6ng\u00fc kurulur. D\u00f6ng\u00fcn\u00fcn her ad\u0131m\u0131nda, mevcut \u00f6\u011fenin daha \u00f6nce olu\u015fturulan yeni listede olup olmad\u0131\u011f\u0131 kontrol edilir. <code>if item not in new_list:<\/code> ifadesi bu kontrol\u00fc sa\u011flar. E\u011fer \u00f6\u011fe yeni listede yoksa, <code>new_list.append(item)<\/code> ile eklenir.<\/p>\n<p><strong>Kullan\u0131m:<\/strong><\/p>\n<pre><code class=\"language-python\">my_list = [1, 2, 2, 3, 4, 4, 5, 1]\nunique_list = []\nfor item in my_list:\n    if item not in unique_list:\n        unique_list.append(item)\nprint(unique_list) # \u00c7\u0131kt\u0131: [1, 2, 3, 4, 5] (S\u0131ra korunur)<\/code><\/pre>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   <strong>S\u0131ray\u0131 Korur:<\/strong> Orijinal listedeki \u00f6\u011felerin eklenme s\u0131ras\u0131n\u0131 kesinlikle korur.<br \/>\n*   <strong>Okunabilirlik:<\/strong> Mant\u0131\u011f\u0131 olduk\u00e7a basit ve anla\u015f\u0131l\u0131rd\u0131r.<br \/>\n*   <strong>T\u00fcm Tiplerle \u00c7al\u0131\u015f\u0131r:<\/strong> <code>set<\/code>&#8216;in aksine, \u00f6\u011felerin hashable olmas\u0131 gerekmez. Listeler, s\u00f6zl\u00fckler gibi hash edilemeyen tiplerle de \u00e7al\u0131\u015f\u0131r (ancak bu tipler i\u00e7in <code>in<\/code> operat\u00f6r\u00fcn\u00fcn davran\u0131\u015f\u0131 ve performans\u0131 de\u011fi\u015febilir).<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   <strong>Performans:<\/strong> Bu y\u00f6ntemin en b\u00fcy\u00fck dezavantaj\u0131 performans\u0131d\u0131r. <code>item not in unique_list<\/code> kontrol\u00fc, <code>unique_list<\/code> i\u00e7inde do\u011frusal bir arama (O(k)) yapar, burada k <code>unique_list<\/code>&#8216;in mevcut boyutudur. Orijinal listenin boyutu (n) artt\u0131k\u00e7a, bu kontrol\u00fcn toplam maliyeti O(n^2) ortalama zaman karma\u015f\u0131kl\u0131\u011f\u0131na ula\u015f\u0131r. B\u00fcy\u00fck listeler i\u00e7in bu kabul edilemez derecede yava\u015f olabilir.<\/p>\n<h4>3. list.sort() ve D\u00f6ng\u00fc Kullanarak Tekrarlanan \u00d6\u011feleri Kald\u0131rma (S\u0131ray\u0131 K\u0131smen Korur, Modifiye Eder)<\/h4>\n<p>Bu y\u00f6ntem, \u00f6nce listeyi s\u0131ralar, ard\u0131ndan s\u0131ralanm\u0131\u015f listedeki yan yana gelen tekrarlanan \u00f6\u011feleri eleyerek benzersiz bir liste olu\u015fturur. Bu, orijinal listeyi de\u011fi\u015ftirir ve \u00f6\u011felerin eklenme s\u0131ras\u0131n\u0131 korumaz; bunun yerine alfabetik veya say\u0131sal s\u0131raya g\u00f6re bir d\u00fczenleme yapar.<\/p>\n<p><strong>Nas\u0131l \u00c7al\u0131\u015f\u0131r:<\/strong><br \/>\n\u0130lk olarak, <code>my_list.sort()<\/code> \u00e7a\u011fr\u0131s\u0131 ile liste yerinde (in-place) s\u0131ralan\u0131r. S\u0131raland\u0131ktan sonra, ayn\u0131 \u00f6\u011feler birbirinin yan\u0131na gelir. Daha sonra, yeni bir liste olu\u015fturulur ve ilk \u00f6\u011fe buraya eklenir. Kalan \u00f6\u011feler \u00fczerinde d\u00f6ng\u00fc yap\u0131l\u0131r ve yaln\u0131zca bir \u00f6nceki \u00f6\u011feden farkl\u0131 olan \u00f6\u011feler yeni listeye eklenir.<\/p>\n<p><strong>Kullan\u0131m:<\/strong><\/p>\n<pre><code class=\"language-python\">my_list = [1, 2, 2, 3, 4, 4, 5, 1]\nmy_list.sort() # Liste \u015fimdi: [1, 1, 2, 2, 3, 4, 4, 5]\nif not my_list: # Bo\u015f liste kontrol\u00fc\n    unique_list = []\nelse:\n    unique_list = [my_list[0]]\n    for i in range(1, len(my_list)):\n        if my_list[i] != my_list[i-1]:\n            unique_list.append(my_list[i])\nprint(unique_list) # \u00c7\u0131kt\u0131: [1, 2, 3, 4, 5] (S\u0131ralanm\u0131\u015f haliyle benzersiz)<\/code><\/pre>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   <strong>Bellek Verimlili\u011fi:<\/strong> E\u011fer orijinal liste yerinde de\u011fi\u015ftirilebiliyorsa, ek bir <code>set<\/code> veya <code>OrderedDict<\/code> gibi b\u00fcy\u00fck veri yap\u0131lar\u0131na ihtiya\u00e7 duyulmaz (ancak <code>unique_list<\/code> yine de yeni bir liste olu\u015fturur).<br \/>\n*   <strong>Hashable Olmayan Tiplerle \u00c7al\u0131\u015f\u0131r (S\u0131ralanabilir Olmalar\u0131 \u015eart\u0131yla):<\/strong> \u00d6\u011feler hashable olmasa bile, kar\u015f\u0131la\u015ft\u0131r\u0131labilir (comparable) olmalar\u0131 durumunda bu y\u00f6ntem kullan\u0131labilir.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   <strong>S\u0131ra Kayb\u0131:<\/strong> Orijinal eklenme s\u0131ras\u0131 tamamen kaybedilir ve liste s\u0131ralanm\u0131\u015f bir hale gelir.<br \/>\n*   <strong>Orijinal Listeyi De\u011fi\u015ftirir:<\/strong> <code>sort()<\/code> metodu orijinal listeyi yerinde de\u011fi\u015ftirir. Bu istenmeyen bir yan etki olabilir.<br \/>\n*   <strong>Performans:<\/strong> <code>sort()<\/code> i\u015flemi ortalama O(n log n) zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahiptir. Bu, <code>set()<\/code>&#8216;e g\u00f6re daha yava\u015ft\u0131r.<\/p>\n<h3>S\u0131ray\u0131 Koruyan Daha Geli\u015fmi\u015f ve Verimli Y\u00f6ntemler<\/h3>\n<p>Yukar\u0131daki temel y\u00f6ntemlerden baz\u0131lar\u0131 s\u0131ray\u0131 koruyamazken, baz\u0131lar\u0131 da b\u00fcy\u00fck listeler i\u00e7in performans sorunlar\u0131 ya\u015fatabilir. \u0130\u015fte hem s\u0131ray\u0131 koruyan hem de verimli olan daha geli\u015fmi\u015f y\u00f6ntemler:<\/p>\n<h4>1. collections.OrderedDict.fromkeys() Kullanarak Tekrarlanan \u00d6\u011feleri Kald\u0131rma (S\u0131ray\u0131 Korur, Verimli)<\/h4>\n<p><code>collections<\/code> mod\u00fcl\u00fcndeki <code>OrderedDict<\/code>, Python 3.7&#8217;den itibaren standart <code>dict<\/code>&#8216;lerin de davran\u0131\u015f\u0131na d\u00f6n\u00fc\u015fen, anahtarlar\u0131n eklenme s\u0131ras\u0131n\u0131 koruyan bir s\u00f6zl\u00fck t\u00fcr\u00fcd\u00fcr. <code>fromkeys()<\/code> metodu, bir yinelenebilir nesnedeki \u00f6\u011feleri anahtar olarak kullanarak yeni bir s\u00f6zl\u00fck olu\u015fturur. Anahtarlar benzersiz oldu\u011fu i\u00e7in, bu y\u00f6ntem tekrarlanan \u00f6\u011feleri otomatik olarak elerken eklenme s\u0131ras\u0131n\u0131 da korur.<\/p>\n<p><strong>Nas\u0131l \u00c7al\u0131\u015f\u0131r:<\/strong><br \/>\n<code>OrderedDict.fromkeys(iterable)<\/code> \u00e7a\u011fr\u0131s\u0131, <code>iterable<\/code> i\u00e7indeki her bir \u00f6\u011feyi bir anahtar olarak kullanarak bir <code>OrderedDict<\/code> olu\u015fturur. E\u011fer bir anahtar zaten mevcutsa, <code>fromkeys()<\/code> onu tekrar eklemez. Bu, benzersiz anahtarlar\u0131n eklenme s\u0131ras\u0131na g\u00f6re bir <code>OrderedDict<\/code> olu\u015fturulmas\u0131n\u0131 sa\u011flar. Daha sonra, bu <code>OrderedDict<\/code>&#8216;in anahtarlar\u0131n\u0131 bir listeye d\u00f6n\u00fc\u015ft\u00fcrerek istedi\u011fimiz sonucu elde ederiz.<\/p>\n<p><strong>Kullan\u0131m:<\/strong><\/p>\n<pre><code class=\"language-python\">import collections\n\nmy_list = [1, 2, 2, 3, 4, 4, 5, 1]\nunique_list = list(collections.OrderedDict.fromkeys(my_list))\nprint(unique_list) # \u00c7\u0131kt\u0131: [1, 2, 3, 4, 5] (S\u0131ra korunur)<\/code><\/pre>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   <strong>S\u0131ray\u0131 Korur:<\/strong> \u00d6\u011felerin orijinal eklenme s\u0131ras\u0131n\u0131 m\u00fckemmel bir \u015fekilde korur.<br \/>\n*   <strong>Verimli:<\/strong> Anahtarlar\u0131n hash de\u011ferlerini kulland\u0131\u011f\u0131 i\u00e7in ortalama zaman karma\u015f\u0131kl\u0131\u011f\u0131 O(n)&#8217;dir. Bu, <code>set()<\/code> kadar h\u0131zl\u0131d\u0131r.<br \/>\n*   <strong>Zarif ve K\u0131sa Kod:<\/strong> Tek sat\u0131rl\u0131k, okunakl\u0131 bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   <strong>Hashable \u00d6\u011feler Gerektirir:<\/strong> <code>set()<\/code> gibi, <code>OrderedDict<\/code> anahtarlar\u0131 da hashable olmal\u0131d\u0131r. Bu, listeler veya s\u00f6zl\u00fckler gibi de\u011fi\u015ftirilebilir tiplerle do\u011frudan \u00e7al\u0131\u015famaz.<br \/>\n*   <strong>Ek Mod\u00fcl \u0130\u00e7e Aktar\u0131m\u0131:<\/strong> <code>collections<\/code> mod\u00fcl\u00fcn\u00fc i\u00e7e aktarmay\u0131 gerektirir.<\/p>\n<p>Python 3.7 ve sonraki s\u00fcr\u00fcmlerde, standart <code>dict<\/code>&#8216;ler de anahtarlar\u0131n eklenme s\u0131ras\u0131n\u0131 korudu\u011fu i\u00e7in, <code>OrderedDict<\/code> yerine do\u011frudan <code>dict.fromkeys()<\/code> kullan\u0131labilir ve ayn\u0131 sonucu verir:<\/p>\n<pre><code class=\"language-python\">my_list = [1, 2, 2, 3, 4, 4, 5, 1]\nunique_list = list(dict.fromkeys(my_list))\nprint(unique_list) # \u00c7\u0131kt\u0131: [1, 2, 3, 4, 5] (S\u0131ra korunur, Python 3.7+)<\/code><\/pre>\n<p>Bu, Python&#8217;\u0131n daha yeni s\u00fcr\u00fcmleri i\u00e7in tercih edilen, daha da basit bir yakla\u015f\u0131md\u0131r.<\/p>\n<h4>2. Bir set() ve D\u00f6ng\u00fc Kombinasyonu Kullanarak Tekrarlanan \u00d6\u011feleri Kald\u0131rma (S\u0131ray\u0131 Korur, Verimli)<\/h4>\n<p>Bu y\u00f6ntem, <code>set()<\/code>&#8216;in h\u0131zl\u0131 kontrol yetene\u011fini, d\u00f6ng\u00fcn\u00fcn s\u0131ray\u0131 koruma \u00f6zelli\u011fiyle birle\u015ftirir. Bir <code>set<\/code> (g\u00f6r\u00fclen \u00f6\u011feleri tutmak i\u00e7in) ve yeni bir liste (benzersiz \u00f6\u011feleri toplamak i\u00e7in) kullan\u0131l\u0131r. Liste \u00fczerinde d\u00f6ng\u00fc yap\u0131l\u0131rken, her \u00f6\u011fe <code>set<\/code> i\u00e7inde kontrol edilir. E\u011fer \u00f6\u011fe <code>set<\/code> i\u00e7inde yoksa, hem yeni listeye eklenir hem de <code>set<\/code>&#8216;e eklenir.<\/p>\n<p><strong>Nas\u0131l \u00c7al\u0131\u015f\u0131r:<\/strong><br \/>\n<code>seen<\/code> ad\u0131nda bo\u015f bir <code>set<\/code> ve <code>unique_list<\/code> ad\u0131nda bo\u015f bir liste olu\u015fturulur. Orijinal <code>my_list<\/code> \u00fczerinde bir d\u00f6ng\u00fc yap\u0131l\u0131r. Her <code>item<\/code> i\u00e7in, <code>if item not in seen:<\/code> kontrol\u00fc yap\u0131l\u0131r. <code>set<\/code>&#8216;te arama i\u015flemi ortalama O(1) oldu\u011fu i\u00e7in bu kontrol \u00e7ok h\u0131zl\u0131d\u0131r. E\u011fer <code>item<\/code> <code>seen<\/code> i\u00e7inde yoksa, <code>unique_list.append(item)<\/code> ile yeni listeye eklenir ve <code>seen.add(item)<\/code> ile <code>seen<\/code> k\u00fcmesine eklenir, b\u00f6ylece bir sonraki d\u00f6ng\u00fcde ayn\u0131 \u00f6\u011fe tekrar gelirse atlanm\u0131\u015f olur.<\/p>\n<p><strong>Kullan\u0131m:<\/strong><\/p>\n<pre><code class=\"language-python\">my_list = [1, 2, 2, 3, 4, 4, 5, 1]\nseen = set()\nunique_list = []\nfor item in my_list:\n    if item not in seen:\n        unique_list.append(item)\n        seen.add(item)\nprint(unique_list) # \u00c7\u0131kt\u0131: [1, 2, 3, 4, 5] (S\u0131ra korunur)<\/code><\/pre>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   <strong>S\u0131ray\u0131 Korur:<\/strong> \u00d6\u011felerin orijinal eklenme s\u0131ras\u0131n\u0131 korur.<br \/>\n*   <strong>Verimli:<\/strong> <code>set<\/code> \u00fczerinde <code>in<\/code> kontrol\u00fc ortalama O(1) oldu\u011fu i\u00e7in, toplam zaman karma\u015f\u0131kl\u0131\u011f\u0131 O(n)&#8217;dir.<br \/>\n*   <strong>A\u00e7\u0131k ve Anla\u015f\u0131l\u0131r:<\/strong> Mant\u0131\u011f\u0131 kolayca takip edilebilir.<br \/>\n*   <strong>T\u00fcm Python S\u00fcr\u00fcmlerinde Tutarl\u0131:<\/strong> <code>dict<\/code>&#8216;lerin s\u0131ray\u0131 koruma \u00f6zelli\u011fi Python 3.7 ile standartla\u015fmadan \u00f6nce de bu y\u00f6ntem kullan\u0131labilirdi.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   <strong>Hashable \u00d6\u011feler Gerektirir:<\/strong> <code>set<\/code> kulland\u0131\u011f\u0131 i\u00e7in, \u00f6\u011felerin hashable olmas\u0131 gerekir.<br \/>\n*   <strong>\u0130ki Veri Yap\u0131s\u0131 Y\u00f6netimi:<\/strong> Hem bir <code>set<\/code> hem de bir liste y\u00f6netimi gerektirir, bu da biraz daha fazla bellek kullan\u0131m\u0131na yol a\u00e7abilir (ancak genellikle ihmal edilebilir).<\/p>\n<h3>Hash Edilemeyen (Unhashable) Tiplerle \u00c7al\u0131\u015fma<\/h3>\n<p>Yukar\u0131da bahsedilen <code>set()<\/code> ve <code>OrderedDict.fromkeys()<\/code> gibi verimli y\u00f6ntemlerin ortak bir k\u0131s\u0131tlamas\u0131 vard\u0131r: yaln\u0131zca hashable (hash edilebilir) \u00f6\u011felerle \u00e7al\u0131\u015f\u0131rlar. Python&#8217;da de\u011fi\u015ftirilebilir (mutable) nesneler (\u00f6rne\u011fin listeler, s\u00f6zl\u00fckler ve baz\u0131 \u00f6zel s\u0131n\u0131flar\u0131n \u00f6rnekleri) hash edilemezdir. Bu durum, bu t\u00fcr \u00f6\u011feler i\u00e7eren bir listeden tekrarlananlar\u0131 kald\u0131rmak istedi\u011fimizde \u00f6zel yakla\u015f\u0131mlar gerektirir.<\/p>\n<h4>1. Hash Edilemeyen \u00d6\u011feler Nelerdir?<\/h4>\n<p>Hash edilebilir bir nesne, \u00f6mr\u00fc boyunca hash de\u011ferini asla de\u011fi\u015ftirmeyen bir nesnedir. Ayr\u0131ca, kar\u015f\u0131la\u015ft\u0131r\u0131labilir olmal\u0131 ve e\u015fit olan nesnelerin ayn\u0131 hash de\u011ferine sahip olmas\u0131 gerekir.<br \/>\n*   <strong>Hashable Tipler:<\/strong> Say\u0131lar (int, float), stringler, tuple&#8217;lar, frozenset&#8217;ler.<br \/>\n*   <strong>Unhashable Tipler:<\/strong> Listeler, s\u00f6zl\u00fckler, set&#8217;ler. Bunlar de\u011fi\u015ftirilebilir olduklar\u0131 i\u00e7in hash de\u011ferleri de\u011fi\u015febilir, bu y\u00fczden hash edilemezler.<\/p>\n<p>Bir listeler listesi (<code>[[1, 2], [3, 4], [1, 2]]<\/code>) veya s\u00f6zl\u00fckler listesi (<code>[{'id': 1}, {'id': 2}, {'id': 1}]<\/code>) gibi durumlarda, do\u011frudan <code>set()<\/code> veya <code>OrderedDict.fromkeys()<\/code> kullanamay\u0131z.<\/p>\n<h4>2. Listelerden Olu\u015fan Listeler \u0130\u00e7in Tekrarlanan \u00d6\u011feleri Kald\u0131rma<\/h4>\n<p>E\u011fer listeniz, i\u00e7 listelerden olu\u015fuyorsa ve bu i\u00e7 listelerin kendileri de hashable \u00f6\u011felerden olu\u015fuyorsa, i\u00e7 listeleri tuple&#8217;lara d\u00f6n\u00fc\u015ft\u00fcrerek <code>set()<\/code> veya <code>OrderedDict.fromkeys()<\/code> kullanabilirsiniz. Tuple&#8217;lar hashable&#8217;d\u0131r.<\/p>\n<p><strong>Tuple&#8217;lara D\u00f6n\u00fc\u015ft\u00fcrerek:<\/strong><\/p>\n<pre><code class=\"language-python\">list_of_lists = [[1, 2], [3, 4], [1, 2], [5, 6], [3, 4, 5]]\n<h2>\u0130\u00e7 listeleri tuple'lara d\u00f6n\u00fc\u015ft\u00fcr, sonra set kullanarak benzersiz hale getir<\/h2>\nunique_tuples = set(tuple(sublist) for sublist in list_of_lists)\n<h2>Geri listeye d\u00f6n\u00fc\u015ft\u00fcr<\/h2>\nunique_list_of_lists = [list(t) for t in unique_tuples]\nprint(unique_list_of_lists) # \u00c7\u0131kt\u0131: [[1, 2], [3, 4], [3, 4, 5], [5, 6]] (S\u0131ra garanti de\u011fildir)<\/code><\/pre>\n<p>Bu y\u00f6ntem s\u0131ray\u0131 korumaz. E\u011fer s\u0131ray\u0131 korumak istiyorsan\u0131z, <code>OrderedDict.fromkeys()<\/code> ile tuple&#8217;lar\u0131 kullanabilirsiniz:<\/p>\n<pre><code class=\"language-python\">import collections\n\nlist_of_lists = [[1, 2], [3, 4], [1, 2], [5, 6], [3, 4, 5]]\nunique_list_of_lists_ordered = list(collections.OrderedDict.fromkeys(tuple(sublist) for sublist in list_of_lists))\nunique_list_of_lists_ordered = [list(t) for t in unique_list_of_lists_ordered]\nprint(unique_list_of_lists_ordered) # \u00c7\u0131kt\u0131: [[1, 2], [3, 4], [5, 6], [3, 4, 5]] (S\u0131ra korunur)<\/code><\/pre>\n<p><strong>Manuel D\u00f6ng\u00fc ve Kar\u015f\u0131la\u015ft\u0131rma (S\u0131ray\u0131 Korur):<\/strong><br \/>\nE\u011fer i\u00e7 listeleriniz hashable olmayan \u00f6\u011feler i\u00e7eriyorsa (\u00f6rne\u011fin, bir listeler listesi i\u00e7inde ba\u015fka listeler varsa), tuple&#8217;a d\u00f6n\u00fc\u015ft\u00fcrmek her zaman m\u00fcmk\u00fcn olmayabilir. Bu durumda, manuel bir d\u00f6ng\u00fc ve eleman baz\u0131nda kar\u015f\u0131la\u015ft\u0131rma yapman\u0131z gerekebilir. Bu y\u00f6ntem, <code>list<\/code>&#8216;lerin <code>==<\/code> operat\u00f6r\u00fc ile kar\u015f\u0131la\u015ft\u0131r\u0131labilir olmas\u0131ndan faydalan\u0131r.<\/p>\n<pre><code class=\"language-python\">list_of_lists = [[1, [2, 3]], [4, 5], [1, [2, 3]], [6, 7]]\nunique_list_of_lists = []\nfor sublist in list_of_lists:\n    if sublist not in unique_list_of_lists:\n        unique_list_of_lists.append(sublist)\nprint(unique_list_of_lists) # \u00c7\u0131kt\u0131: [[1, [2, 3]], [4, 5], [6, 7]] (S\u0131ra korunur)<\/code><\/pre>\n<p>Bu y\u00f6ntem, yukar\u0131da bahsedilen <code>O(n^2)<\/code> zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahip &#8220;D\u00f6ng\u00fc ve Yeni Bir Liste Kullanma&#8221; y\u00f6nteminin dezavantajlar\u0131na sahiptir ve b\u00fcy\u00fck listeler i\u00e7in yava\u015f olabilir.<\/p>\n<h4>3. S\u00f6zl\u00fcklerden Olu\u015fan Listeler \u0130\u00e7in Tekrarlanan \u00d6\u011feleri Kald\u0131rma<\/h4>\n<p>S\u00f6zl\u00fckler hash edilemezdir, bu y\u00fczden do\u011frudan <code>set()<\/code> veya <code>OrderedDict.fromkeys()<\/code> ile kullan\u0131lamazlar. Ancak, genellikle s\u00f6zl\u00fcklerde bir veya daha fazla anahtar, s\u00f6zl\u00fc\u011f\u00fc benzersiz bir \u015fekilde tan\u0131mlayan bir kimlik (ID) g\u00f6revi g\u00f6r\u00fcr.<\/p>\n<p><strong>Benzersiz Bir Anahtar Kullanarak (S\u0131ray\u0131 Korur):<\/strong><br \/>\nE\u011fer her s\u00f6zl\u00fc\u011f\u00fcn benzersiz bir kimli\u011fini temsil eden bir anahtar\u0131 (\u00f6rne\u011fin &#8216;id&#8217; veya &#8216;name&#8217;) varsa, bu anahtar\u0131n de\u011ferlerini bir <code>set<\/code>&#8216;te tutarak tekrarlar\u0131 eleyebiliriz.<\/p>\n<pre><code class=\"language-python\">list_of_dicts = [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 1, 'name': 'Alice'}, {'id': 3, 'name': 'Charlie'}]\nseen_ids = set()\nunique_list_of_dicts = []\nfor d in list_of_dicts:\n    if d['id'] not in seen_ids:\n        unique_list_of_dicts.append(d)\n        seen_ids.add(d['id'])\nprint(unique_list_of_dicts)\n<h2>\u00c7\u0131kt\u0131: [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 3, 'name': 'Charlie'}]<\/code><\/pre>\n<\/h2>\n<p>Bu y\u00f6ntem, <code>id<\/code> gibi benzersiz bir anahtar\u0131n varl\u0131\u011f\u0131na dayan\u0131r.<\/p>\n<p><strong>S\u00f6zl\u00fckleri frozenset&#8217;e D\u00f6n\u00fc\u015ft\u00fcrerek (S\u0131ray\u0131 Korumaz):<\/strong><br \/>\nE\u011fer s\u00f6zl\u00fcklerin t\u00fcm anahtar-de\u011fer \u00e7iftlerinin benzersiz oldu\u011funu varsay\u0131yor ve s\u0131ran\u0131n \u00f6nemi yoksa, her s\u00f6zl\u00fc\u011f\u00fc \u00f6nce <code>items()<\/code> metoduyla tuple&#8217;lara d\u00f6n\u00fc\u015ft\u00fcr\u00fcp, sonra bu tuple&#8217;lar\u0131 i\u00e7eren bir <code>frozenset<\/code>&#8216;e \u00e7evirerek hashable hale getirebiliriz. <code>frozenset<\/code>&#8216;ler hashable&#8217;d\u0131r.<\/p>\n<pre><code class=\"language-python\">list_of_dicts = [{'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'a': 1, 'b': 2}]\n<h2>S\u00f6zl\u00fckleri frozenset'e d\u00f6n\u00fc\u015ft\u00fcr<\/h2>\nunique_frozensets = set(frozenset(d.items()) for d in list_of_dicts)\n<h2>Geri s\u00f6zl\u00fcklere d\u00f6n\u00fc\u015ft\u00fcr<\/h2>\nunique_list_of_dicts = [dict(fs) for fs in unique_frozensets]\nprint(unique_list_of_dicts) # \u00c7\u0131kt\u0131: [{'a': 1, 'b': 2}, {'c': 3, 'd': 4}] (S\u0131ra garanti de\u011fildir)<\/code><\/pre>\n<p>Bu y\u00f6ntem, anahtarlar\u0131n s\u0131ras\u0131n\u0131n \u00f6nemli olmad\u0131\u011f\u0131 ve de\u011ferlerin de hashable oldu\u011fu durumlarda i\u015fe yarar.<\/p>\n<h3>Performans Kar\u015f\u0131la\u015ft\u0131rmalar\u0131 ve Ne Zaman Hangi Y\u00f6ntem Se\u00e7ilmeli?<\/h3>\n<p>Farkl\u0131 y\u00f6ntemlerin performans\u0131, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken kritik \u00f6neme sahiptir. Performans\u0131 de\u011ferlendirirken genellikle zaman karma\u015f\u0131kl\u0131\u011f\u0131na (time complexity) ve bellek kullan\u0131m\u0131na bak\u0131l\u0131r\u0131z.<\/p>\n<h4>1. Zaman Karma\u015f\u0131kl\u0131\u011f\u0131 (Time Complexity)<\/h4>\n<p>Zaman karma\u015f\u0131kl\u0131\u011f\u0131, bir algoritman\u0131n \u00e7al\u0131\u015fma s\u00fcresinin, giri\u015f verisinin boyutuyla (genellikle &#8216;n&#8217; ile g\u00f6sterilir) nas\u0131l artt\u0131\u011f\u0131n\u0131 ifade eder.<\/p>\n<p>*   <strong>O(1) &#8211; Sabit Zaman:<\/strong> \u0130\u015flem s\u00fcresi giri\u015f boyutundan ba\u011f\u0131ms\u0131zd\u0131r.<br \/>\n*   <strong>O(log n) &#8211; Logaritmik Zaman:<\/strong> Giri\u015f boyutu artt\u0131k\u00e7a i\u015flem s\u00fcresi \u00e7ok yava\u015f artar.<br \/>\n*   <strong>O(n) &#8211; Do\u011frusal Zaman:<\/strong> \u0130\u015flem s\u00fcresi giri\u015f boyutuyla do\u011fru orant\u0131l\u0131 olarak artar.<br \/>\n*   <strong>O(n log n) &#8211; Do\u011frusal Logaritmik Zaman:<\/strong> Genellikle s\u0131ralama algoritmalar\u0131nda g\u00f6r\u00fcl\u00fcr, O(n)&#8217;den daha yava\u015f ama O(n^2)&#8217;den daha h\u0131zl\u0131d\u0131r.<br \/>\n*   <strong>O(n^2) &#8211; Karesel Zaman:<\/strong> \u0130\u015flem s\u00fcresi giri\u015f boyutunun karesiyle orant\u0131l\u0131 olarak artar. B\u00fcy\u00fck giri\u015fler i\u00e7in \u00e7ok yava\u015f olabilir.<\/p>\n<p><strong>Y\u00f6ntemlerin Zaman Karma\u015f\u0131kl\u0131\u011f\u0131:<\/strong><\/p>\n<p>*   <strong><code>set()<\/code> Kullan\u0131m\u0131:<\/strong> Ortalama <strong>O(n)<\/strong>. Hash de\u011ferleri sayesinde \u00e7ok h\u0131zl\u0131d\u0131r.<br \/>\n*   <strong>D\u00f6ng\u00fc ve <code>in<\/code> Kontrol\u00fc (Yeni Liste):<\/strong> Ortalama <strong>O(n^2)<\/strong>. <code>in<\/code> operat\u00f6r\u00fcn\u00fcn her seferinde listenin tamam\u0131n\u0131 taramas\u0131 nedeniyle.<br \/>\n*   <strong><code>list.sort()<\/code> ve D\u00f6ng\u00fc:<\/strong> <strong>O(n log n)<\/strong> (s\u0131ralama i\u00e7in) + <strong>O(n)<\/strong> (d\u00f6ng\u00fc i\u00e7in) = Toplamda <strong>O(n log n)<\/strong>.<br \/>\n*   <strong><code>collections.OrderedDict.fromkeys()<\/code> veya <code>dict.fromkeys()<\/code>:<\/strong> Ortalama <strong>O(n)<\/strong>. Hash de\u011ferleri sayesinde h\u0131zl\u0131d\u0131r.<br \/>\n*   <strong><code>set<\/code> ve D\u00f6ng\u00fc Kombinasyonu:<\/strong> Ortalama <strong>O(n)<\/strong>. <code>set<\/code> \u00fczerindeki <code>in<\/code> kontrol\u00fc ortalama O(1)&#8217;dir.<\/p>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc gibi, <code>set()<\/code> tabanl\u0131 \u00e7\u00f6z\u00fcmler (do\u011frudan <code>set()<\/code>, <code>OrderedDict.fromkeys()<\/code>, <code>set<\/code> ve d\u00f6ng\u00fc kombinasyonu) ortalama O(n) zaman karma\u015f\u0131kl\u0131\u011f\u0131 ile en verimli olanlard\u0131r.<\/p>\n<h4>2. Bellek Kullan\u0131m\u0131<\/h4>\n<p>Performans kadar bellek kullan\u0131m\u0131 da \u00f6nemlidir.<br \/>\n*   <strong><code>set()<\/code> ve <code>OrderedDict.fromkeys()<\/code>:<\/strong> Yeni bir <code>set<\/code> veya <code>OrderedDict<\/code> olu\u015fturuldu\u011fu i\u00e7in orijinal listenin bir kopyas\u0131 kadar veya daha fazla bellek kullanabilir.<br \/>\n*   <strong>D\u00f6ng\u00fc ve Yeni Liste:<\/strong> Yeni bir liste olu\u015fturuldu\u011fu i\u00e7in orijinal listenin bir kopyas\u0131 kadar bellek kullan\u0131r.<br \/>\n*   <strong><code>list.sort()<\/code> ve D\u00f6ng\u00fc:<\/strong> <code>sort()<\/code> i\u015flemi genellikle yerinde yap\u0131l\u0131r (ancak Python&#8217;daki <code>list.sort()<\/code> bir Timsort uygulamas\u0131d\u0131r ve baz\u0131 durumlarda ek bellek kullanabilir). Yeni liste olu\u015fturuldu\u011fu i\u00e7in yine orijinal listenin bir kopyas\u0131 kadar bellek kullan\u0131l\u0131r.<br \/>\n*   <strong><code>set<\/code> ve D\u00f6ng\u00fc Kombinasyonu:<\/strong> Hem bir <code>set<\/code> hem de yeni bir liste olu\u015fturuldu\u011fu i\u00e7in en fazla bellek kullanan y\u00f6ntemlerden biri olabilir, ancak genellikle bu fark ihmal edilebilir d\u00fczeydedir.<\/p>\n<h4>3. Uygulama Senaryolar\u0131na G\u00f6re Se\u00e7im<\/h4>\n<p>Hangi y\u00f6ntemin se\u00e7ilece\u011fi, genellikle a\u015fa\u011f\u0131daki fakt\u00f6rlere ba\u011fl\u0131d\u0131r:<\/p>\n<p>*   <strong>S\u0131ra \u00d6nemli mi?<\/strong><br \/>\n    *   <strong>Hay\u0131r:<\/strong> <code>set(my_list)<\/code> en basit ve en h\u0131zl\u0131 \u00e7\u00f6z\u00fcmd\u00fcr.<br \/>\n    *   <strong>Evet:<\/strong><br \/>\n        *   <strong>Python 3.7+ ise:<\/strong> <code>list(dict.fromkeys(my_list))<\/code> en zarif ve verimli \u00e7\u00f6z\u00fcmd\u00fcr.<br \/>\n        *   <strong>T\u00fcm Python s\u00fcr\u00fcmleri i\u00e7in veya <code>collections<\/code> mod\u00fcl\u00fcn\u00fc kullanmak isteniyorsa:<\/strong> <code>list(collections.OrderedDict.fromkeys(my_list))<\/code>.<br \/>\n        *   <strong>A\u00e7\u0131k\u00e7a kontrol mekanizmas\u0131 isteniyorsa:<\/strong> <code>set<\/code> ve d\u00f6ng\u00fc kombinasyonu.<br \/>\n*   <strong>\u00d6\u011feler Hashable m\u0131?<\/strong><br \/>\n    *   <strong>Evet:<\/strong> Yukar\u0131daki verimli O(n) \u00e7\u00f6z\u00fcmler kullan\u0131labilir.<br \/>\n    *   <strong>Hay\u0131r (Listelerden olu\u015fan listeler, s\u00f6zl\u00fcklerden olu\u015fan listeler vb.):<\/strong><br \/>\n        *   <strong>Tuple&#8217;a d\u00f6n\u00fc\u015ft\u00fcr\u00fclebilirse:<\/strong> Tuple&#8217;a d\u00f6n\u00fc\u015ft\u00fcrerek <code>set()<\/code> veya <code>OrderedDict.fromkeys()<\/code> kullan\u0131n.<br \/>\n        *   <strong>Benzersiz bir anahtar varsa (s\u00f6zl\u00fckler i\u00e7in):<\/strong> Anahtar\u0131 kullanarak <code>set<\/code> ve d\u00f6ng\u00fc kombinasyonu uygulay\u0131n.<br \/>\n        *   <strong>Hi\u00e7biri de\u011filse:<\/strong> Manuel d\u00f6ng\u00fc ve <code>in<\/code> kontrol\u00fc (O(n^2) olas\u0131 performans dezavantaj\u0131yla).<br \/>\n*   <strong>Listenin Boyutu:<\/strong><br \/>\n    *   <strong>K\u00fc\u00e7\u00fck Listeler (birka\u00e7 y\u00fcz \u00f6\u011feye kadar):<\/strong> T\u00fcm y\u00f6ntemler yeterince h\u0131zl\u0131 olacakt\u0131r. Basit d\u00f6ng\u00fc ve <code>in<\/code> kontrol\u00fc bile kabul edilebilir olabilir. Okunabilirlik ve basitlik \u00f6n planda tutulabilir.<br \/>\n    *   <strong>B\u00fcy\u00fck Listeler (binlerce veya milyonlarca \u00f6\u011fe):<\/strong> O(n) \u00e7\u00f6z\u00fcmleri (set tabanl\u0131) kesinlikle tercih edilmelidir. O(n^2) \u00e7\u00f6z\u00fcmleri ka\u00e7\u0131n\u0131lmal\u0131d\u0131r.<\/p>\n<h4>4. timeit Mod\u00fcl\u00fc ile K\u0131yaslama<\/h4>\n<p>Python&#8217;daki <code>timeit<\/code> mod\u00fcl\u00fc, farkl\u0131 kod par\u00e7ac\u0131klar\u0131n\u0131n \u00e7al\u0131\u015fma s\u00fcrelerini \u00f6l\u00e7mek i\u00e7in kullan\u0131labilir. Bu, belirli bir senaryoda hangi y\u00f6ntemin daha h\u0131zl\u0131 oldu\u011funu deneysel olarak g\u00f6rmek i\u00e7in faydal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-python\">import timeit\nimport collections\n\n<h2>B\u00fcy\u00fck bir liste olu\u015ftural\u0131m<\/h2>\nlong_list = list(range(10000)) + list(range(5000)) + list(range(20000, 25000))\n<h2>Kar\u0131\u015ft\u0131rmak i\u00e7in<\/h2>\nimport random\nrandom.shuffle(long_list)\n\n<h2>Y\u00f6ntem 1: set()<\/h2>\ntime_set = timeit.timeit(\"list(set(data))\", globals={'data': long_list}, number=100)\nprint(f\"set() y\u00f6ntemi s\u00fcresi: {time_set:.6f} saniye\")\n\n<h2>Y\u00f6ntem 2: D\u00f6ng\u00fc ve 'in' kontrol\u00fc (O(n^2))<\/h2>\nsetup_loop = \"\"\"\nunique_list = []\nfor item in data:\n    if item not in unique_list:\n        unique_list.append(item)\n\"\"\"\ntime_loop = timeit.timeit(setup_loop, globals={'data': long_list}, number=1) # Sadece 1 kez \u00e7al\u0131\u015ft\u0131r, \u00e7ok yava\u015f\nprint(f\"D\u00f6ng\u00fc ve 'in' kontrol\u00fc y\u00f6ntemi s\u00fcresi: {time_loop:.6f} saniye\")\n\n<h2>Y\u00f6ntem 3: OrderedDict.fromkeys()<\/h2>\ntime_ordereddict = timeit.timeit(\"list(collections.OrderedDict.fromkeys(data))\", globals={'data': long_list, 'collections': collections}, number=100)\nprint(f\"OrderedDict.fromkeys() y\u00f6ntemi s\u00fcresi: {time_ordereddict:.6f} saniye\")\n\n<h2>Y\u00f6ntem 4: set ve d\u00f6ng\u00fc kombinasyonu<\/h2>\nsetup_set_loop = \"\"\"\nseen = set()\nunique_list = []\nfor item in data:\n    if item not in seen:\n        unique_list.append(item)\n        seen.add(item)\n\"\"\"\ntime_set_loop = timeit.timeit(setup_set_loop, globals={'data': long_list}, number=100)\nprint(f\"set ve d\u00f6ng\u00fc kombinasyonu y\u00f6ntemi s\u00fcresi: {time_set_loop:.6f} saniye\")\n\n<h2>Y\u00f6ntem 5: dict.fromkeys() (Python 3.7+)<\/h2>\ntime_dict_fromkeys = timeit.timeit(\"list(dict.fromkeys(data))\", globals={'data': long_list}, number=100)\nprint(f\"dict.fromkeys() y\u00f6ntemi s\u00fcresi: {time_dict_fromkeys:.6f} saniye\")<\/code><\/pre>\n<p>Yukar\u0131daki kodu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, <code>set()<\/code> tabanl\u0131 \u00e7\u00f6z\u00fcmlerin (Y\u00f6ntem 1, 3, 4, 5) di\u011ferlerine g\u00f6re \u00e7ok daha h\u0131zl\u0131 oldu\u011funu g\u00f6receksiniz, \u00f6zellikle de <code>O(n^2)<\/code> olan &#8220;D\u00f6ng\u00fc ve &#8216;in&#8217; kontrol\u00fc&#8221; y\u00f6nteminin ne kadar yava\u015f kald\u0131\u011f\u0131 a\u00e7\u0131k\u00e7a ortaya \u00e7\u0131kacakt\u0131r.<\/p>\n<h3>Ger\u00e7ek D\u00fcnya Senaryolar\u0131<\/h3>\n<p>Tekrarlanan \u00f6\u011feleri kald\u0131rma becerisi, bir\u00e7ok ger\u00e7ek d\u00fcnya programlama senaryosunda hayati \u00f6neme sahiptir:<\/p>\n<p>*   <strong>Veri Temizli\u011fi (Data Cleaning):<\/strong> Bir CSV dosyas\u0131ndan veya veritaban\u0131ndan okunan verilerde genellikle tekrarlanan kay\u0131tlar bulunur. Bu kay\u0131tlar\u0131 temizlemek, analizlerin do\u011frulu\u011funu art\u0131r\u0131r ve gereksiz depolama alan\u0131n\u0131 azalt\u0131r.<br \/>\n*   <strong>Kullan\u0131c\u0131 Girdilerini \u0130\u015fleme:<\/strong> Bir web uygulamas\u0131nda kullan\u0131c\u0131lar\u0131n etiketler (tag) girmesine izin verildi\u011finde, ayn\u0131 etiketin birden fazla kez girilmesi \u00f6nlenmelidir.<br \/>\n*   <strong>Benzersiz Kimlikler veya Etiketler Olu\u015fturma:<\/strong> Bir sistemde benzersiz kimlikler (ID&#8217;ler) veya etiketler listesi olu\u015fturulurken, her bir \u00f6\u011fenin yaln\u0131zca bir kez g\u00f6r\u00fcnmesi sa\u011flanmal\u0131d\u0131r.<br \/>\n*   <strong>API Yan\u0131tlar\u0131n\u0131 Filtreleme:<\/strong> Bir API&#8217;den gelen verilerde ayn\u0131 nesnenin birden fazla kopyas\u0131 bulunabilir. Bu tekrarlar\u0131 kald\u0131rmak, istemci taraf\u0131nda veri i\u015fleme y\u00fck\u00fcn\u00fc azalt\u0131r.<br \/>\n*   <strong>Arama Sonu\u00e7lar\u0131n\u0131 Optimizasyon:<\/strong> Bir arama motoru, ayn\u0131 sonucu birden fazla kez d\u00f6nd\u00fcrebilir. Tekrarlar\u0131 kald\u0131rmak, kullan\u0131c\u0131lara daha temiz ve ilgili bir sonu\u00e7 listesi sunar.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Python&#8217;da bir listeden tekrarlanan \u00f6\u011feleri kald\u0131rmak i\u00e7in \u00e7e\u015fitli etkili y\u00f6ntemler bulunmaktad\u0131r. Se\u00e7ilecek en iyi y\u00f6ntem, projenizin \u00f6zel gereksinimlerine ba\u011fl\u0131d\u0131r:<\/p>\n<p>*   <strong>S\u0131ra \u00f6nemli de\u011filse ve \u00f6\u011feler hashable ise:<\/strong> En h\u0131zl\u0131 ve en basit \u00e7\u00f6z\u00fcm <code>list(set(my_list))<\/code> kullanmakt\u0131r.<br \/>\n*   <strong>S\u0131ra \u00f6nemliyse ve \u00f6\u011feler hashable ise:<\/strong><br \/>\n    *   Python 3.7 ve sonras\u0131 i\u00e7in <code>list(dict.fromkeys(my_list))<\/code> en zarif ve verimli se\u00e7enektir.<br \/>\n    *   Eski Python s\u00fcr\u00fcmleri veya daha a\u00e7\u0131k bir mekanizma i\u00e7in <code>list(collections.OrderedDict.fromkeys(my_list))<\/code> veya <code>set<\/code> ve d\u00f6ng\u00fc kombinasyonu (<code>seen = set(); unique_list = []; for item in my_list: if item not in seen: unique_list.append(item); seen.add(item)<\/code>) tercih edilebilir.<br \/>\n*   <strong>\u00d6\u011feler hashable de\u011filse (\u00f6rne\u011fin listelerden olu\u015fan listeler veya s\u00f6zl\u00fcklerden olu\u015fan listeler):<\/strong><br \/>\n    *   M\u00fcmk\u00fcnse \u00f6\u011feleri hashable bir forma (\u00f6rne\u011fin tuple&#8217;lara) d\u00f6n\u00fc\u015ft\u00fcr\u00fcp <code>set<\/code> veya <code>OrderedDict.fromkeys()<\/code> kullan\u0131n.<br \/>\n    *   S\u00f6zl\u00fckler i\u00e7in benzersiz bir anahtar kullanarak manuel bir d\u00f6ng\u00fc ve <code>set<\/code> kontrol\u00fc yap\u0131n.<br \/>\n    *   Son \u00e7are olarak veya k\u00fc\u00e7\u00fck listeler i\u00e7in <code>item not in new_list<\/code> kontrol\u00fc ile manuel d\u00f6ng\u00fcy\u00fc kullan\u0131n, ancak performans dezavantaj\u0131n\u0131 g\u00f6z \u00f6n\u00fcnde bulundurun.<\/p>\n<p>Her y\u00f6ntemin kendi avantajlar\u0131 ve dezavantajlar\u0131 vard\u0131r. Veri setinizin boyutu, \u00f6\u011felerin tipi, s\u0131ran\u0131n korunup korunmayaca\u011f\u0131 ve performans gereksinimleriniz, do\u011fru y\u00f6ntemi se\u00e7menizde belirleyici fakt\u00f6rler olacakt\u0131r. Python&#8217;\u0131n sundu\u011fu zengin veri yap\u0131lar\u0131 ve mod\u00fcller sayesinde, her t\u00fcrl\u00fc senaryoya uygun bir \u00e7\u00f6z\u00fcm bulmak m\u00fcmk\u00fcnd\u00fcr. Do\u011fru arac\u0131 do\u011fru i\u015f i\u00e7in kullanmak, daha verimli, okunabilir ve bak\u0131m\u0131 kolay kod yazman\u0131n anahtar\u0131d\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Python&#8217;da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber\nPython, veri manip\u00fclasyonu i\u00e7in son derece g\u00fc\u00e7l\u00fc ve esnek bir progr","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1403],"tags":[],"class_list":{"0":"post-30466","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-python","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python&#039;da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python&#039;da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"Python&#039;da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber Python, veri manip\u00fclasyonu i\u00e7in son derece g\u00fc\u00e7l\u00fc ve esnek bir progr\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-28T02:41:12+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Python&#8217;da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber\",\"datePublished\":\"2025-09-28T02:41:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/\"},\"wordCount\":3439,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Python\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/\",\"name\":\"Python'da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-09-28T02:41:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python&#8217;da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Python'da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Python'da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber","og_description":"Python'da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber Python, veri manip\u00fclasyonu i\u00e7in son derece g\u00fc\u00e7l\u00fc ve esnek bir progr","og_url":"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-09-28T02:41:12+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"21 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Python&#8217;da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber","datePublished":"2025-09-28T02:41:12+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/"},"wordCount":3439,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Python"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/","name":"Python'da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-09-28T02:41:12+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-bir-listeden-tekrarlanan-ogeleri-kaldirma-kapsamli-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Python&#8217;da Bir Listeden Tekrarlanan \u00d6\u011feleri Kald\u0131rma: Kapsaml\u0131 Bir Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30466","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=30466"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30466\/revisions"}],"predecessor-version":[{"id":30467,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30466\/revisions\/30467"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=30466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=30466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=30466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}