リスト
前回、Pythonでの無限大「inf」の作成方法とその特徴を紹介しました。

今回はPythonで複数のリスト内の要素を比較する方法を紹介します。
それでは始めていきましょう。
複数の要素をもつリスト同士の比較
まずとりあえず複数の要素をもつリスト同士を比較してみましょう。
a = [1, 2, 3, 4, 5]
b = [5, 4, 3, 2, 1]
print(a<b)
print(a>b)
実行結果
True
False
比較自体はでき、それぞれ「True」と「False」という結果が得られました。
どこを比較したらその結果になるのかというと、この場合はそれぞれのリストの一番最初の要素同士を比較した場合です。
それぞれのリストの最初の要素はaのリストでは1、bのリストでは5ですので、「a<b」は「True」、「a>b」は「False」となります。
では次にこのような場合はどうでしょうか?
a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 2, 1]
print(a<b)
print(a>b)
実行結果
False
True
この場合、aのリスト、bのリストともに最初の3つの要素は「1, 2, 3」です。
それにも関わらず「a<bはFalse」、「a>bはTrue」となっています。
これは最初の3つの要素ではTrueともFalseとも言えないため、4つ目の要素である「4」と「2」で比較されたことから、「a<bはFalse」、「a>bはTrue」という結果になったのです。
では「==」の場合はどうでしょうか?
a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 2, 1]
c = [1, 2, 3, 4, 5]
print(a==b)
print(a==c)
実行結果
False
True
「==」の場合、全ての要素が一致している場合は「True」、ひとつでも違っていたら「False」となります。
とここまで複数の要素をもつリスト同士の比較を解説してきましたが、正直「これじゃない感」が満載だと思います。
そうではなくてリスト内の複数の要素を同時に比較する方法が知りたいのではないでしょうか?
リスト内の複数の要素を同時に比較する方法
リスト内の複数の要素を同時に比較するには、リストをNumPyのndarrayに変換して比較します。
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.array([5, 4, 3, 2, 1])
print(a<b)
print(a>b)
実行結果
[ True True False False False]
[False False False True True]
ndarrayの場合は同じインデックス同士の要素が比較され、その結果はbool値としてndarrayに格納され返されます。
もちろん「==」の場合も比較が可能です。
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.array([1, 2, 3, 2, 1])
c = np.array([1, 2, 3, 4, 5])
print(a==b)
print(a==c)
実行結果
[ True True True False False]
[ True True True True True]
比較した結果、一つでもFalseがあった場合、全体の結果として「False」を返すとしたい場合はif文を使ってこのようにします。
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.array([5, 4, 3, 2, 1])
print(a < b)
if False in (a < b):
print("FALSE")
else:
print("TRUE")
[ True True False False False]
FALSE
次回はfor文におけるループ処理とは別の処理を行うelseの使い方を紹介します。
ではでは今回はこんな感じで。
コメント