2017-11-29 7 views
-1

2つのリストを比較したいと思います。たとえば、リスト比較はどのように機能しますか?

a = [8,9,9,11] 

b = [8,7,20,10] 

if a >= b : 

    print "true" 

"true"はなぜ印刷されますか?

8 >= 8 is true 

9 >= 7 is true 

9 >= 20 is false but the program return true 

11 >= 10 is true 
+0

? –

+2

探している出力を明確にすることはできますか? 'False'の結果だけが必要なのか、'(True、True、False、True) 'のようなシーケンスを探していますか? –

+0

デフォルトでは、タプル(またはリスト)は文字列の比較方法と同様に比較されます。比較では、一致しないペアが見つかるまで(または1つのコレクションに項目がなくなるまで) –

答えて

1

あなたは比較のすべてをチェックするall機能を使用して賢明な2つのリストの要素を比較するために、リストの内包表記を使用することができますTrueです:あなたは大多数の結果が欲しいわけ

a = [8,9,9,11] 
b = [8,7,20,10] 
all(a[i]>=b[i] for i in range(len(a))) # False 
+1

[マイ・マリア・カリアへの私のコメント]を参照してください(https://stackoverflow.com/questions/47548113/how-to-compare-8-9-9-11-vs-8-7-20-10#comment82053005_47548232) –

+1

また、OP(たぶん)は、すべての要素のペアを比較したくないので、double forループが間違っています。 –

+0

@ PM2Ring、ええ、私はあなたのことを見ていますが、リスト内包に 'break 'を使うことはできないので、最初に' False'が起こったときにどうすれば止められますか? – Arman

1

次のように、リスト内包し、すべての機能を使用することができます:

コード:

a = 8,9,9,11 
b = 8,7,20,10 
print all([(a > b) for a, b in zip(a,b)]) 

出力:

私はこのような値 垂直を比較したいです
False 
+2

ジェネリック式を 'list'ではなく' all'または 'any'に渡す必要があります。両方の機能が短絡しているので、結果が明確になるとすぐに処理が停止します。あなたがそれらをリストcompにフィードした場合、作業を開始する前にリスト全体を構築しなければなりませんが、結果を決定するのに必要な数だけ生成されます。 –

関連する問題