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

  • DrakeVEVO

    DrakeVEVO

    17 AĞUSTOS 2009
  • jesiel santos

    jesiel santo

    15 Ocak 2009
  • steeletraining

    steeletraini

    28 NİSAN 2010