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

  • Bratayley

    Bratayley

    30 Aralık 2010
  • MndsgnVEVO

    MndsgnVEVO

    26 Kasım 2013
  • The Brister

    The Brister

    10 ŞUBAT 2008