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

  • dope2111

    dope2111

    29 HAZİRAN 2009
  • infodirt

    infodirt

    11 Mart 2009
  • technodromeband's channel

    technodromeb

    28 NİSAN 2011