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

  • ChrisCrossMedia

    ChrisCrossMe

    17 EYLÜL 2009
  • Photoshop Training Channel

    Photoshop Tr

    13 Temmuz 2012
  • RaverX DouBle StAg XI

    RaverX DouBl

    23 Mayıs 2008