SORU
20 AĞUSTOS 2009, PERŞEMBE


Python: liste Ekle?

Python 2.6 tercüman test:

>>> a=set('abcde')
>>> a
set(['a', 'c', 'b', 'e', 'd'])
>>> l=['f','g']
>>> l
['f', 'g']
>>> a.add(l)
Traceback (most recent call last):
  File "<pyshell#35>", line 1, in <module>
    a.add(l)
TypeError: list objects are unhashable

Python iki kez aynı listeye ekledim söyleyebilir yolu yok çünkü ayarlamak için listeye ekleyin edemem diye düşünüyorum. Geçici bir çözüm var mı?

EDİT: listeyi kendisi, kendi öğeleri eklemek istiyorum.

CEVAP
20 AĞUSTOS 2009, PERŞEMBE


Listeler değiştirilebilir sete ekledikten sonra listenin içeriğini değiştirmek için başka bir yoludur, çünkü bir dizi için bir liste ekleyebilirsiniz.

Bir başlığın içeriğini değiştiremezsiniz çünkü ancak sete dizilerini ekleyebilirsiniz:

>>> a.add(('f', 'g'))
>>> print a
set(['a', 'c', 'b', 'e', 'd', ('f', 'g')])

< / ^ hr .

Edit: açıklama: belgeler set olarak tanımlarfarklı hashable nesnelerin sırasız bir koleksiyon.Nesneleri bulmak o kadar hashable olmak zorunda, ve öğeleri ekleme ve çıkarma daha hızlı, her elemanın her zaman daha yapılabilir bu işlemleri gerçekleştirmek. Özel algoritmalar kullanılır Wikipedia article açıklanmıştır. Piton algoritmalar karma effbot.org açıklıyor python reference __hash__ fonksiyon piton.

Bazı gerçekler:

  • Set elemanlarısırasözlük anahtarlarıhashable olmak zorunda
  • Bazı unhashable türleri:
    • list: tuple kullanın
    • set: frozenset kullanın
    • dict: resmi bir muadili var, ama bazı vardır recipes
  • Nesne örnekleri her örnek varsayılan olarak hashable benzersiz bir karma geçiriyor. Python başvuru anlatıldığı gibi bu davranışı geçersiz kılabilirsiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • laptopmag

    laptopmag

    25 Ocak 2008
  • PremiumBeat.com - Royalty Free Music

    PremiumBeat.

    16 Kasım 2008
  • xiaoyu85

    xiaoyu85

    20 ŞUBAT 2010