理想的には、 sort() 関数はポリモーフィズムの優れた例です。sort() 関数の場合、ほとんど何でもソートできます。
In [27]: b
Out[27]: [3, 4, 5, 6]
In [28]: b = ['a','b',5,6,None]
In [29]: b.sort()
In [30]: b
Out[30]: [None, 5, 6, 'a', 'b']
In [31]: b = ['a','b',23,'c',None,5j]
In [32]: b.sort()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/dubizzle/webapps/django/dubizzle/<ipython-input-32-fc40da74ac51> in <module>()
----> 1 b.sort()
TypeError: no ordering relation is defined for complex numbers
しかし、虚数の場合、 sort() 関数が失敗するようです。このエラーTypeError: no Order Relationship is defined for complex numbers が発生していることに注意してください。
だから私の質問は
- この順序付けは正確にどこで定義されていますか? sort() 関数は内部でどのように機能しますか?
- 複素数に対してこの順序関係を残す目的はありますか、それとも c 言語には累乗演算子がないため、同様に省略されています(間違い)。
- 基本的にPythonで虚数(複素数)をどのようにソートしますか? これを行うためのpythonicな方法はありますか?