2011-08-23 4 views
18
numaralı telefon numarasından büyük

Bir listenin bir sayıdan daha büyük olduğunu keşfettim.Python listesi

>>> [1,2,3] > 1000 
True 

Bunun neden bir nedeni var mı? Bir listeyi int([1,2,3]) ile int'ye dönüştüremiyorum. Int, list(1000) ile bir listeye dönüştürülemiyor. Peki python ikiyi nasıl karşılaştırıyor?

+3

Bu, Python 3'te çalışır mı? –

+2

@Mike, no. bir TypeError –

+2

elde edersiniz ** Bulunur: ** [PEP 3100] 'da gömülüdür (http://www.python.org/dev/peps/pep-3100/): "' == 've' dışındaki diğer karşılaştırmalar! = "Farklı türler arasında," –

cevap

26

Bu "eşleşmeyen" türlerde, türler, sözcük türüne göre sözcüksel olarak listelenir: alfabetik sırayla "int" sonra bir "liste" gelir, bu nedenle daha büyüktür.

CPython uygulama ayrıntısı: numaraları dışındaki farklı türdeki nesneler, tür isimlerine göre sıralanır; Uygun karşılaştırmayı desteklemeyen aynı türdeki nesneler adreslerine göre sıralanır. (source)

(ayrı tutarlı olmasından itibaren) sipariş için hiçbir dil özelliği vardır. Sadece, CPython'un, bu dillerden sözcüklerin tür isimlerine göre sıralanmasının ayrıntılarının bulunduğu en yaygın uygulama olduğu düşünülür. Python Reference Manual göre

+8

Bunu söylemek üzereydim. Python 3'te karşılaştırılamazlar. Ayrıca, Python 2.x'te hiçbir zaman, her zaman diğerlerinden daha azını karşılaştırır. – RxS

+1

@Uku Loskit _ "türler sözlüksel olarak listelenmiştir" _ Nerede? – eyquem

+0

@machine yearning & eyquem: cevabı biraz güncelledi. –

10

, aynı nesne olmadıkça eşit olmayan karşılaştırma dahili türleri

En diğer amaçları; Bir nesnenin diğerinden daha küçük veya daha büyük olarak kabul edilip edilmediğinin seçimi, bir programın yürütülmesi sırasında keyfi olarak fakat tutarlı bir şekilde yapılır.