シーケンスの比較


PythonでJupyterで下を実行しました。

[code]

    'Matplotlib' > 'NumPy' > 'pandas' > 'scikit-learn'
    
[/code]

がFalseになる理由が分かりません。

[code]

    ('bb', 'c') > ('bcd', 'a')
    
[/code]

がFalseになる理由が分かりません。

ご指導よろしくお願いいたします。




こちらの記事の方が比較の手順を箇条書き的に説明していて分かりやすいと思われます。

[Pythonで文字列を比較（完全一致、部分一致、大小関係など）](https://note.nkmk.me/python-str-compare/)  
[比較演算子の使い方](https://www.javadrive.jp/python/if/index4.html)

抜粋すると以下になります。

  * 1文字目から1文字毎に比較される(違いが出た時点で結果になる)
  * 比較する値はUnicodeのコードポイントの値が使われる
  * アルファベットは大文字のほうが小文字よりもコードポイントが小さい
  * ひらがなのほうがカタカナよりもコードポイントが小さい
  * アルファベットやひらがなカタカナはまとまって順番通りに近いがその他はバラバラ
  * そのため人間のイメージどおりの大小関係になるとは限らない
  * タプルやリストは文字列の考え方と同様に各要素毎に順番に比較が行われる(最初の要素で違いがあればそれが結果になる)

* * *

`'Matplotlib' > 'NumPy' > 'pandas' > 'scikit-
learn'`がFalseになるのは、1文字目の比較で文字のコードポイントの大小が不等号と逆だからですね。  
複数の同時比較は and 条件になるようです。すべて`<`でないとTrueにはなりませんでした。

`('bb', 'c') > ('bcd',
'a')`がFalseになるのは、`'bb'`と`'bcd'`を比較して、2文字目で`'bcd'`の方が大きいとなるからですね




こちらの記事の方が比較の手順を箇条書き的に説明していて分かりやすいと思われます。

[Pythonで文字列を比較（完全一致、部分一致、大小関係など）](https://note.nkmk.me/python-str-compare/)  
[比較演算子の使い方](https://www.javadrive.jp/python/if/index4.html)

抜粋すると以下になります。

  * 1文字目から1文字毎に比較される(違いが出た時点で結果になる)
  * 比較する値はUnicodeのコードポイントの値が使われる
  * アルファベットは大文字のほうが小文字よりもコードポイントが小さい
  * ひらがなのほうがカタカナよりもコードポイントが小さい
  * アルファベットやひらがなカタカナはまとまって順番通りに近いがその他はバラバラ
  * そのため人間のイメージどおりの大小関係になるとは限らない
  * タプルやリストは文字列の考え方と同様に各要素毎に順番に比較が行われる(最初の要素で違いがあればそれが結果になる)

* * *

`'Matplotlib' > 'NumPy' > 'pandas' > 'scikit-
learn'`がFalseになるのは、1文字目の比較で文字のコードポイントの大小が不等号と逆だからですね。  
複数の同時比較は and 条件になるようです。すべて`<`でないとTrueにはなりませんでした。

`('bb', 'c') > ('bcd',
'a')`がFalseになるのは、`'bb'`と`'bcd'`を比較して、2文字目で`'bcd'`の方が大きいとなるからですね

