Python Listelerinden Yinelenen Öğeleri Kaldırmanın 5 Yöntemi
Yayınlanan: 2022-07-05Bu öğreticide, yinelenen öğeleri Python listelerinden nasıl kaldıracağınızı öğreneceksiniz.
Python'da listelerle çalışırken, kopyaları kaldırarak bazen listedeki yalnızca benzersiz öğelerle çalışmanız gerekebilir.
Bunu yapmanın birkaç farklı yolu vardır. Bu derste, bu tür beş tekniğin üzerinden geçeceğiz.
Python Listelerinin Temelleri
Python listelerinin temellerini gözden geçirerek tartışmamıza başlayalım.
Python listeleri değişkendir. Böylece listeden öğeler ekleyip çıkararak bunları yerinde değiştirebilirsiniz. Ek olarak, Python listeleri, benzersiz olması gerekmeyen öğelerin koleksiyonlarıdır.
Peki, yalnızca benzersiz öğeleri nasıl korur ve yinelenen veya yinelenen öğeleri nasıl kaldırırsınız ?
Peki, bunu birkaç farklı şekilde yapabilirsiniz. Yalnızca orijinal listedeki benzersiz öğeleri içeren yeni bir liste oluşturabilirsiniz. Veya orijinal listeyi yerinde değiştirmeyi ve yinelenen öğeleri kaldırmayı seçebilirsiniz.
Bunları bu eğitimde ayrıntılı olarak öğreneceğiz.
Python Listelerinden Yinelenenleri Kaldırma Yöntemleri
Gerçek dünyadan bir örnek alalım. Diyelim ki arkadaşınızın doğum günü partisindesiniz.
Görüntülenen tatlı koleksiyonunda, tekrarlanan bazı öğeler olduğunu görüyorsunuz. Şimdi bu yinelenen öğeleri tatlılar listesinden çıkarmak istiyorsunuz.

Yukarıdaki resimdeki tüm öğeleri içeren bir sweets
listesi oluşturalım.
sweets = ["cupcake","candy","lollipop","cake","lollipop","cheesecake","candy","cupcake"]
Yukarıdaki sweets
listesinde, 'şekerleme' ve 'çörek' öğeleri iki kez tekrarlanır. Yinelenen öğeleri kaldırmak için bu örnek listeyi kullanalım.
Yinelenenleri Kaldırmak için Python Listeleri Üzerinde Yineleme
En basit yöntem, her öğeyi tam olarak bir kez içeren yeni bir liste oluşturmaktır.
Aşağıdaki kod hücresini okuyun:
unique_sweets = [] for sweet in sweets: if sweet not in unique_sweets: unique_sweets.append(sweet) print(unique_sweets) # Output ['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']
-
unique_sweets
boş bir liste başlatıyoruz. -
sweets list
dolaşırken her birsweet
erişiyoruz. -
unique_sweets
listesinde henüzsweet
yoksa, bunu.append()
yöntemini kullanarakunique_sweets
listesinin sonuna ekleriz.
Diyelim ki yinelenen bir öğeyle karşılaştınız, örneğin, sweets
listesinde ikinci kez 'şekerleme'. Bu, zaten mevcut olduğu için unique_sweets
listesine eklenmez: sweet not in unique_sweets
, 'cupcake' ve 'candy'nin ikinci oluşumu için False
olarak değerlendirilir.
Bu nedenle, bu yöntemde, her öğe unique_sweets
listesinde tam olarak bir kez bulunur - herhangi bir tekrar olmadan.
Yinelenenleri Kaldırmak için Liste Anlamayı Kullanın
unique_sweets
listesini doldurmak için liste kavrayışını da kullanabilirsiniz.
Liste anlamanın temellerini yenilemek ister misiniz?
️ Python'da liste anlama ile ilgili eğiticiye göz atın.
Yukarıdaki döngüyü kısa ve öz bir şekilde yeniden yazmak için liste anlama ifadesini kullanalım: [output for item in iterable if koşul True] .
unique_sweets = [] [unique_sweets.append(sweet) for sweet in sweets if sweet not in unique_sweets] print(unique_sweets) # Output ['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']
Yeni bir liste oluşturuyor olsanız bile, oluşturulan listeyi değerlerle doldurmuyorsunuz. Bunun nedeni, çıktının unique_sweets
listesine yapılan .append()
işlemi olmasıdır.
Python listelerinden yinelenen öğeleri kaldırmak için yerleşik liste yöntemlerini de kullanabilirsiniz; bunu bir sonraki bölümde ele alacağız.
Yinelenenleri Kaldırmak için Yerleşik Liste Yöntemlerini Kullanın
Yinelenen öğeleri kaldırmak için Python liste yöntemleri .count()
ve .remove()
'u kullanabilirsiniz.
– list.count(value) sözdizimi ile
.count()
yöntemi,list
value
kaç kez gerçekleştiğini döndürür. Bu nedenle, yinelenen öğelere karşılık gelen sayı 1'den büyük olacaktır.– list.remove(value) , değerin ilk oluşumunu listeden kaldırır.
Yukarıdakileri kullanarak aşağıdaki kodu elde ederiz.
for sweet in sweets: # check if the count of sweet is > 1 (repeating item) if sweets.count(sweet) > 1: # if True, remove the first occurrence of sweet sweets.remove(sweet) print(sweets) # Output ['cake', 'lollipop', 'cheesecake', 'candy', 'cupcake']
.remove()
yöntemi, bir değerin yalnızca ilk oluşumunu kaldırdığından, ikiden fazla oluşan öğeleri kaldırmak için kullanamazsınız.
- Belirli bir öğe kopyalanırsa (tam olarak iki kez oluşursa), bu yöntem ilk oluşumu kaldırır.
- Belirli bir öğe
K
kez tekrarlanırsa, yukarıdaki kodu çalıştırdıktan sonraK-1
tekrarları kalır.
Ama genel olarak, yineleme dediğimizde, genellikle tüm tekrarları kastederiz.
Bu durumu ele almak için, biri hariç tüm tekrarları kaldırmak için yukarıdaki döngüyü değiştirebilirsiniz. Belirli bir öğenin sayısını kontrol etmek için bir if
koşullu kullanmak yerine, listedeki her öğenin sayısı 1 olana kadar tekrarları tekrar tekrar kaldırmak için bir while
döngüsü çalıştırabilirsiniz.

Liste sweets
artık 2 tekrar 'cupcake' ve 3 tekrar 'şeker' içeriyor.
sweets = ["cupcake","candy","lollipop","cake","lollipop","candy","cheesecake","candy","cupcake"]
Aşağıda gösterildiği gibi tekrarları kaldırmak için bir while
döngüsü kullanabilirsiniz. Şekerlemelerdeki tatlı sayısı 1'den büyük olduğu sürece while döngüsü çalışmaya devam eder. Yalnızca bir oluşum kaldığında, sweets.count(sweet) > 1 koşulu False olur ve döngü bir sonraki öğeye atlar.
for sweet in sweets: # check if the count of sweet is > 1 (repeating item) while(sweets.count(sweet) > 1): # repeatedly remove the first occurrence of sweet until one occurrence remains. sweets.remove(sweet) print(sweets) # Output ['cake', 'lollipop', 'cheesecake', 'candy', 'cupcake']
Ancak iç içe döngüler kullanmak çok verimli olmayabilir, bu nedenle büyük listelerle çalışıyorsanız tartışılan diğer tekniklerden birini kullanmayı düşünebilirsiniz.
Şimdiye kadar şunları öğrendik:
- Yalnızca benzersiz öğeler içeren yeni listeler oluşturarak Python listelerinden yinelenen öğeleri kaldırma yöntemleri
- Listeyi yerinde değiştirmek için yerleşik liste yöntemleri
.count()
ve.remove()
Değerlerin tamamen benzersiz olmasını gerektiren bazı Python yerleşik veri yapıları vardır - tekrarlama olmadan. Bu nedenle, yinelenenleri kaldırmak için bu veri yapılarından birine bir Python listesi gönderebiliriz. Ve sonra onları tekrar bir listeye dönüştürün. Bunu nasıl yapacağımızı ilerleyen bölümlerde öğreneceğiz.
Yinelenenleri Kaldırmak için Python Listesini Bir Kümeye Dökün
Python kümeleri, tümü benzersiz olan öğelerin koleksiyonlarıdır. Bu nedenle, kümede bulunan öğelerin sayısı ( len(<set-obj>
tarafından verilir) mevcut benzersiz öğelerin sayısına eşittir.
Yinelenebilir herhangi bir Python'u, sözdizimini kullanarak bir kümeye dönüştürebilirsiniz:
set(iterable)
.
Şimdi liste şekerlerini bir set haline getirelim ve çıktısını inceleyelim.
set(sweets) # Output {'cake', 'candy', 'cheesecake', 'cupcake', 'lollipop'}
Yukarıdaki kod hücresindeki çıktıdan, her öğenin tam olarak bir kez göründüğünü ve kopyaların kaldırıldığını görüyoruz.
Ayrıca, öğelerin sırasının, orijinal liste şekerlemelerindeki sıralarıyla mutlaka aynı olmadığına dikkat edin. Bunun nedeni, benzersiz öğelerden oluşan bir koleksiyon olmasının yanı sıra, bir Python küme nesnesinin sırasız bir koleksiyon olmasıdır.
Artık listeyi bir kümeye çevirerek kopyaları kaldırdığımıza göre, aşağıda gösterildiği gibi tekrar bir listeye dönüştürebiliriz.
unique_sweets = list(set(sweets)) print(unique_sweets) # Output ['cake', 'cheesecake', 'candy', 'cupcake', 'lollipop']
Yinelenenleri Kaldırmak için Liste Öğelerini Sözlük Anahtarları Olarak Kullanın
Python sözlüğü, anahtarların değerleri benzersiz bir şekilde tanımladığı bir anahtar-değer çiftleri koleksiyonudur.
.fromkeys()
yöntemini kullanarak şu sözdizimiyle bir Python sözlüğü oluşturabilirsiniz: dict.fromkeys(keys, values)
. Burada keys
ve values
, sırasıyla sözlüğün anahtarlarını ve değerlerini içeren yinelenebilirlerdir.
-
keys
gerekli bir parametredir ve sözlüğün anahtarlarına karşılık gelen yinelenebilir herhangi bir Python olabilir. -
values
isteğe bağlı bir parametredir. Yinelenebilir değerleri belirtmezseniz,None
varsayılan değeri kullanılır.
Değerleri belirtmeden, dict.fromkeys(sweets)
, değerlerin None
olarak ayarlandığı bir Python sözlüğü döndürür – varsayılan değer. Aşağıdaki kod hücresi bunu açıklar.
dict.fromkeys(sweets) # Output {'cake': None, 'candy': None, 'cheesecake': None, 'cupcake': None, 'lollipop': None}
Önceki bölümde olduğu gibi, aşağıda gösterildiği gibi sözlüğü tekrar bir listeye dönüştürebiliriz.
unique_sweets = list(dict.fromkeys(sweets)) print(unique_sweets) # Output ['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']
Yukarıdaki çıktıdan, yinelenen öğelerin sweets
listesinden kaldırıldığını görebiliriz.
Özetliyor
Python listelerinden yinelenen öğeleri veya tekrarları kaldırmak için kullanabileceğiniz farklı yöntemlerin bir özetini burada bulabilirsiniz.
- Yeni bir listeye tekrarlanmayan öğeleri eklemek için Python liste yöntemini .append() kullanın. Yeni liste, orijinal listedeki her öğeyi tam olarak bir kez içerir ve tüm tekrarları kaldırır. Bunu, liste anlama özelliğini kullanarak da yapabilirsiniz.
- Tam olarak iki kez oluşan öğeleri kaldırmak için yerleşik .count() ve .remove() yöntemlerini kullanın. Aynısı, tüm ek oluşumları kaldırmak için bir süre döngüsüne yerleştirilebilir.
- Yalnızca benzersiz öğeleri korumak için bir Python listesini bir kümeye yayınlayın.
- Sözlükte tekrarlama anahtarı olmaması gerektiğinden, yinelenenleri listeden kaldırmak için dict.fromkeys(list) kullanın.
Ardından, pratik yapmak ve öğrenmek için Python projelerine göz atın. Veya Python listelerinde bir öğenin dizinini nasıl bulacağınızı öğrenin. Mutlu öğrenme!