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

  • CaptainDisillusion

    CaptainDisil

    18 EYLÜL 2007
  • jedimasterkyle

    jedimasterky

    11 ŞUBAT 2006
  • TV and Lust

    TV and Lust

    26 HAZİRAN 2006