はPythonで次のような問題を考えてみましょう:なぜタプルはPythonのリストよりも大きいですか?
>>>() < []
この文歩留まりFalse
と
>>>() > []
がTRUEに評価します。私の知る限りでは、[]
はFalse
になりますが、空のタプルは何ですか?
我々は
>>> 1233 < (1,2)
を入力した場合我々は戻り値として、True
を取得します。しかし、なぜ ?
おかげ
はPythonで次のような問題を考えてみましょう:なぜタプルはPythonのリストよりも大きいですか?
>>>() < []
この文歩留まりFalse
と
>>>() > []
がTRUEに評価します。私の知る限りでは、[]
はFalse
になりますが、空のタプルは何ですか?
我々は
>>> 1233 < (1,2)
を入力した場合我々は戻り値として、True
を取得します。しかし、なぜ ?
おかげ
:
真であるThe operators <, >, ==, >=, <=, and != compare the values of two objects. The objects need not have the same type. If both are numbers, they are converted to a common type. Otherwise, objects of different types always compare unequal, and are ordered consistently but arbitrarily. You can control comparison behavior of objects of non-builtin types by defining a
__cmp__
method or rich comparison methods like__gt__
, described in section 3.4.(This unusual definition of comparison was used to simplify the definition of operations like sorting and the in and not in operators. In the future, the comparison rules for objects of different types are likely to change.)
。 Python 3では、これはTypeError
です。
() > []
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-d2326cfc55a3> in <module>()
----> 1() > []
TypeError: unorderable types: tuple() > list()
戻るのpython 2:ドキュメントは、これはは任意ですが、一貫順序であることを強調します。
cPython 2では、不等タイプがその型名によって比較されます。したがって、tuple
は辞書順に "list
より大きい"です。 Built-in Types - Comparisonsに記載されているよう
これは実装に依存することができ、私は、このためには直接の理由はないと思います。 Python 3.Xは、2つの異なるタイプ間の比較を一切禁止します。 docsから
これは、CPythonの(2.xの)実装の詳細である:
CPython implementation detail: Objects of different types except numbers are ordered by their type names; objects of the same types that don’t support proper comparison are ordered by their address.
したがって、任意のタプルは'tuple' > 'list'
ので、任意のリストを超えるとを比較します。
これはもはやCPython 3ではなく、Python 2.xの他の実装では決して保持していません。
これは、python 2.xがメソッド__cmp__()
を使用しているためです。
Python 3.xはこのメソッドを使用しません。
あなたは3.0より低いpythonバージョンを使用しています。 Pythonのバージョン3.xで
は、例外があるでしょう:
はTypeError:unorderalbeタイプ...
がdocumentationを参照:
Most other objects of built-in types compare unequal unless they are the same object; the choice whether one object is considered smaller or larger than another one is made arbitrarily but consistently within one execution of a program.
だから、実装依存であるように思われます。たとえば、CPython:
Objects of different types except numbers are ordered by their type names; objects of the same types that don’t support proper comparison are ordered by their address.
python2では「True」のみです。 – iMom0
@ user995394 http://ideone.com/10x5fN – BartoszKP
@BartoszKPそれはpython2なのですか? http:// ideone。com/sMggNX – iMom0