cevap
gelen keyfi nesnelerin sipariş karşılaştırmalar izin verdiği için orijinal tasarım motivasyon heterojen listelerinin sıralama izin vermekti - Bir sonraki alfabetik sırayla birbirlerine tüm dizeleri koymak olacağını, yararlı ve Sayısal sıralamada birbirinin yanındaki tüm sayılar, iki bloktan hangisinin önce geldiği dil tarafından garanti edilmemiştir. Örneğin, bu, O(N log N)
en kötü durumda
içinde herhangi bir listede yalnızca benzersiz öğelerin (yıkanabilir olmayan öğelerle bile) alınmasına izin verdi. Yıllar içinde bu pragmatik düzenleme aşınmış. İlk çatlak, karmaşık sayıları sıralama-karşılaştırma yeteneğinin, birkaç versiyon önce alındığı zaman geldi. Aniden, herhangi bir listesinin sıralanması yeteneği ortadan kalktı: liste, başka türdeki öğelerle birlikte, karmaşık sayılar içeriyorsa, artık geçerli değildi. Daha sonra Guido daha heterojen listeleri daha genel olarak beğenmeye başladı ve böylece bu tür listeler yararlı bir şekilde sıralanabilseydi, gerçekten madde maddesi olmadığını düşünmeye başladılar ... çünkü bu tür listeler yeni düşüncesine göre ilk sırada yer almamalı. . Onları yasaklamak için hiçbir şey yapmadı, ama onları desteklemek için herhangi bir taviz vermeyi kabul etmedi.
Not karmaşık sayılar hala siparişe göre ;-) – olabilecekken hem değişiklikleri geri önceki yazılmıştır Python Zen "pratiklik yener saflık" öğesi (gelen biraz uzakta dengeyi hareket ettiklerini biraz daha fazla saflık, biraz daha az pratiklik. Bununla birlikte, iki rasgele nesneyi (sipariş sayısı karmaşık bir sayı olmaksızın ;-) uzun bir süre boyunca kaldığı sürece) karşılaştırma kabiliyeti, çünkü aynı zamanda Guido, güçlü geriye dönük uyumluluğun sürdürülmesinde gerçekten ısrar etmeye başladı. hem pratik ve saf ;-).
Bu nedenle, yalnızca bazı uzun istenen ancak geriye dönük uyumsuz geliştirmelere izin vermek için güçlü geriye dönük uyumluluğun kısıtlamasının açıkça ve kasıtlı olarak kaldırıldığı Python 3'te (özellikle basitleştirmeler ve belirli görevleri gerçekleştirmenin gereksiz bir şekilde kaldırılması), Farklı tipteki örneklerin sipariş karşılaştırması bir hata oldu.
Bu tarihsel ve felsefi tez çalışması temelde "neden" sorusuna gerçekten cevap vermenin tek yoludur ...! :-)
'da buna artık izin vermeyecek şekilde yenilenmesi, dilin artık bu özelliğe sahip olmasa da, isteğe bağlı listelerin sıralamasının özel bir karşılaştırıcı ile kolayca kapatılabileceğini eklemelidir. İhtiyacın olması durumunda kendiniz yazmanız yeterli olacaktır - aynı zamanda çok pratik bir yaklaşım olacaktır. – Trilarion
Not: Python 2'de, karmaşık bir sayı başka bir karmaşık sayı haricinde başka herhangi bir nesneyle karşılaştırılabilir! karmaşık (1,0)> 'abc', 'False'dir, ancak karmaşık (1,0)> karmaşık (0,0)' 'TypeError'ı yükseltir –
https://docs.python.org/2.7/tutorial/datastructures.html#id1
Note that comparing objects of different types is legal. The outcome is deterministic but arbitrary: the types are ordered by their name. Thus, a list is always smaller than a string, a string is always smaller than a tuple, etc. [1] Mixed numeric types are compared according to their numeric value, so 0 equals 0.0, etc.
Garip. Python 3.0 –
- 1. var_dump (0 == 'hepsi'); // NEDEN DOĞRU
- 2. Python neden doğru cevapları yazdırmıyor?
- 3. Niçin InverseFunction [0 &] @ 33/10? Mathematica yılında
- 4. Neden 0 = 0 "" true 0 = 0 "
- 5. Nümerik dizi veya pandalarla pythonda rutini sadeleştirme
- 6. Perl neden 1 ve 0’ın doğru olduğunu düşünüyor?
- 7. Convert.ToBoolean ("0") neden başarısız?
- 8. Python: 0 Boşsa ve 0 değilse
- 9. Doğru değil, Python R
- 10. Veritabanı ayarlarını openx-2.6.4'te nasıl değiştirebilirim?
- 11. Bu dize neden 0?
- 12. Neden dön (0 * ap ++)?
- 13. Bu çizgi ne yapıyor? arr.length >>> 0
- 14. "+0" ifadesi ne demek regexp \ k <name+0>?
- 15. <code>pg_stat_activity</code> yılında imleci
- 16. Neden TGroupBox'ımın ComponentCount özelliği 0 döndürüyor?
- 17. @@ rowcount> 0 öğesinin @@ rowcount değerini 0 olarak sıfırlaması durumunda yürütülür. Neden?
- 18. Python Tkinter doğru telaffuz
- 19. 0 Python nesneleri bir ızgarada
- 20. R's mclapply() 0 Python eşdeğeri()
- 21. Python neden yanlış ve doğru bir referans sayımı tutuyor?
- 22. CurrentDb.RecordsAffected 0 değerini döndürür. Neden?
- 23. zip% 0? Neden sıkıştırma yok?
- 24. Neden Calendar.get (Calendar.MONTH) 0 döndürüyor?
- 25. Numaram neden 0 olarak geliyor?
- 26. Grafik grafiklerim neden doğru yazılmıyor?
- 27. Margin-top neden doğru çalışmıyor?
- 28. kullanma bir <code>R</code> yılında
- 29. TVOS UITextView <code>TVOS</code> yılında
- 30. TSP matrisi neden sonuç her zaman 0?
BTW, Python 3.0, aynı karşılaştırma için bir 'TypeError: değiştirilemez türleri: str()> int()' üretir – mjv
İlgili http://stackoverflow.com/questions/18387938/how-do-python- karşılaştırma-operatörler-ve-iş-ile-bir-işlev-adı-bir-opera olarak – Kasramvd