Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
今回はPythonリストのちょっと変わった?使い方をご紹介します。以前どこかで見たリストの使い方です(どこで見たのかは忘れましたが)。
それは、リストの中にブール演算子orを使ったものです。次の形です。
[A or B or C or D,,,,,]
これを考えるにあたって、まずはPythonのブール演算子orについての基本を確認しておきましょう。
まず、Pythonにおけるブール演算子orについて、基本を確認しておきましょう。
A or B
この場合の動きは、
Aが真っ先に評価される
↓
・Aが真ならばAの値が返る(Trueがいつも返るわけではない)
・Aば真でないならばBが次に評価される
↓
Bが真ならばBの値が返る(Trueがいつも返るわけではない)
↓
そうでないならばFalseが返る
となります。
具体例をいくつか見ておきましょう。
# Example 1
1 or 2 # 1が返る(Trueではない)
1<2 or 3>4 # Trueが返る
1>2 or 3>4 # Falseが返る
# Example 2
s="Tom"
s or "Mary" # "Tom"が返る
# Example 3
default_name = "Mary"
t = "" # 空の文字列tについては、bool(t)の結果はFalse
set_name= t or default_name
print(set_name) # "Mary"
最後のExample 3の場合は、
set_name= t or default_name
この部分でtが空の文字列であるため真ではないと評価され(実際にbool(t)はFalse)、次にdeault_nameが評価されます。その結果、その値である文字列Maryが返されます。それがset_nameへ代入されます。
それでは今回の記事の本題であるリストの中にブール演算子を使うコードを見てみましょう。
#比較演算をブール演算子orを使ってつなげてリストにして、その結果を返す関数
def fnc(left_arg, right_arg):
result = [
left_arg[0]<right_arg[0] # 1<2なので正しい
or
left_arg[1]>right_arg[1] # 2>3なので間違い
or
left_arg[2]>right_arg[2] # 3>4なので間違い
]
return result
#比較演算の左辺と右辺をそれぞれ作る
left_arg, right_arg = [1,2,3], [2,3,4]
#関数実行
fnc(left_arg, right_arg)
結果は、
[True]
単なるTrueではなく、リストとしての[True]であることに注意してください。
実際に、
type([x<0 or y<2 or z>3])
とすると、
<class 'list'>
となります。
これが一体どういう点で便利なのか、どういった場面で使うといいのか、といわれると正直「うーん・・・?」となるのですが、まぁこういう書き方もできるということです(笑)。