3

ふざけていて、わからないことをぶつけてしまった…

質問1:

a = [1,2,3]
b = [1,2,3,4]

len(a) < b

結果は True ですが、これは実際に2 つのリストの長さを比較しているのでしょうか? これもTrueだかららしい…。

a = [15,32,7]
len(a) < b

質問2:

整数をリストと比較するとどうなるでしょうか? なぜこれらはすべて真なのですか (一般的な説明があると思います...)...

3 < b
20 < b
float('inf') < b
None < b
(lambda x: (x**x)**x) < b

...そして、これらの False?

'poo' < b
'0' < b
4

3 に答える 3

1

データ型に関するドキュメントから:

シーケンス オブジェクトは、同じシーケンス タイプを持つ他のオブジェクトと比較できます。比較には辞書式の順序付けが使用されます。最初に最初の 2 つの項目が比較され、それらが異なる場合は比較の結果が決まります。等しい場合は、次の 2 つの項目が比較され、いずれかのシーケンスが使い果たされるまで続きます。

異なるタイプのオブジェクトを比較することは正当であることに注意してください。結果は決定論的ですが、恣意的です。型は名前順に並べられます。したがって、リストは常に文字列よりも小さく、文字列は常にタプルよりも小さくなります。 1混合数値型は数値に従って比較されるため、0 は 0.0 に等しい、など。

そして、特筆すべきは、

脚注 1異なるタイプのオブジェクトを比較するためのルールに依存するべきではありません。これらは、言語の将来のバージョンで変更される可能性があります。

于 2013-10-12T17:35:15.110 に答える
0

他の回答は何が起こっているのかを説明するのに適していますが、長さを比較する正しい方法は

len(a) < len(b)
于 2013-10-12T17:43:05.203 に答える