SORU
1 Kasım 2011, Salı


Python listeler yinelenen girdileri kaldırma

Yani hemen hemen bir liste birden fazla kopyası vardır ve eğer varsa onları kaldırır olmadığını kontrol etmek için bir program yazmam gerekiyor ve/kaldırıldı yinelenen olmayan öğeleri içeren yeni bir liste döndürür. Bu ama ne yapacağımı bilmiyorum açıkçası.

def remove_duplicates():
    t = ['a', 'b', 'c', 'd']
    t2 = ['a', 'c', 'd']
    for t in t2:
        t.append(t.remove())
    return t

CEVAP
1 Kasım 2011, Salı


Öğeleri eşsiz bir koleksiyon için ortak bir yaklaşım set kullanmaktır. Ayarlarsıralanmamışkoleksiyonlarıfarklınesneler. Herhangi bir iterable bir set oluşturmak için, sadece dahili set() fonksiyonu ile iletebilirsiniz. Eğer daha sonra gerçek bir listesini tekrar gerekiyorsa, benzer şekilde list() işlevi ayarlamak iletebilirsiniz.

Aşağıdaki örnek, yapmaya çalıştığınız her neyse kapsamalıdır:

>>> t = [1, 2, 3, 1, 2, 5, 6, 7, 8]
>>> t
[1, 2, 3, 1, 2, 5, 6, 7, 8]
>>> list(set(t))
[1, 2, 3, 5, 6, 7, 8]
>>> s = [1, 2, 3]
>>> list(set(t) - set(s))
[8, 5, 6, 7]

Örnek sonuç gördüğünüz gibi, orijinal düzeni korunur. Yukarıda da belirtildiği gibi, sipariş kaybolur koleksiyonları sırasız, kendilerini ayarlar. Bir dizi listesine geri dönüştürürken, keyfi bir düzen oluşturuldu.

Eğer sipariş sizin için önemli ise, o zaman daha farklı bir yöntem kullanmak zorunda olacak. This question daha ayrıntılı olarak bu konuyu kapsar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Easy Learn Tutorial

    Easy Learn T

    10 Kasım 2012
  • Jon Reed

    Jon Reed

    14 AĞUSTOS 2006
  • Vortez

    Vortez

    27 Temmuz 2009