CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
こんにちは、菱沼です。
今回も「きれいなPythonプログラミング(マイナビ出版)」という書籍を利用して学習します。
前回は、if文と、if文の代わりに辞書を使う方法、match文について学びました。
今回は、変数の中身を演算子を使ってシンプルに確認する方法を学びます。
プログラムを書いていると、変数の値が想定したものなのか確認したり、複数の変数に同じ値を代入したりする場面がありますが、Pythonには、こうした処理をシンプルに書くための便利な方法があるようです。
今回学ぶのは、その方法を学びます。
まず、変数の中に入っている数値が、指定した範囲内に収まっているのかを確認したい場合、if文を使って判定することになりますが、実際にどう書くかというのを確認してみます。
------------------------------------
P.108
ある数値がある範囲に収まっているかどうかを確認する必要がある場合は、次のようにブール演算子と比較演算子を使います。
if 42 < spam and spam < 99:
------------------------------------
上記の方法は、ブール演算子(and/or/not)と比較演算子が使用されています。
が、これだと、ちょっと見にくさがあるので、こう書き換えることができます。
if 42 < spam < 99:
確認したいのは変数spamに入っている値が42より大きく、99より小さい範囲に収まっているか、ということなので、わざわざandを使わなくても書くことができます。ちなみに上記を実際に動けるようにするとこんな感じになります。
spam = 59
if 42 < spam < 99:
print(’範囲内に収まってるよ!’)
else:
print(’残念!範囲外だね!’)
範囲内に収まってるよ!
問題なく動いてますね~。andを使うより、こちらの方がシンプルでいいですね。
では次に、代入演算子を使ったケースを確認してみます。
------------------------------------
P.108
代入演算子 = を連鎖させる場合も同様です。1行のコードの中で、複数の変数に同じ値を代入することができます。
spam = eggs = bacon = ’string’
print(spam, eggs, bacon)
string string string
------------------------------------
なんか一瞬目が迷子になりそうです。
このコードではspam、eggs、baconという3つの変数すべてに「string」という値を代入します。実際に3つとも、「string」になっているかはprint()で確認しています。
結果がstring string stringなので、確かに入っているんでしょうけれども、なんか結果の表示が間延びしているように見えます...。Trueのほうが結果もわかりやすくてよくないですか!?
というわけで、次のサンプルコードがその方法です。
------------------------------------
P.108
spam = eggs = bacon = ’string’
spam == eggs == bacon == ’string’
True
演算子の連鎖は、ちょっとしたことですが便利なコード短縮方法です。しかし、間違った使い方をすると問題を引き起こす可能性があります。これについては8章で説明します。
------------------------------------
比較演算子(==)を使って、spam、eggs、baconの値がすべて’string’と等しいかを判定しています。うっかり忘れんぼさえしなければコピペで簡単に書けていいですね。
ちなみにこのサンプルコードの前にand演算子を使ってもよいという一文があります。こちらのサンプルコードはありませんが、もし使うとすればこんな書き方になるかと思います。
spam = eggs = bacon = ’string’
if spam == ’string’ and eggs == ’string’ and bacon == ’string’:
print(’True’)
else:
print(’False’)
True
比較演算子でやるよりコードが長くなりますし、タイプミスが出る可能性もあるので、比較演算子でサクッと処理できるならその方がよさそうです。
先ほどの「変数の値が、指定した範囲の中に入っているか」を確認したいという状況とは逆に、「変数に入っている値が、複数の候補のうちのどれかと一致するか」を調べたいということもあると思います。
テキストではまずor演算子を使った方法として、以下のコードが書かれており、これを実行すると「True」が表示されます。
spam == 'cat' or spam == 'dog' or spam == 'moose'
これもまたなんか長いですし、空目を起こしそうです。最近目がしょぼしょぼしがちなのでつらいです。テキストにも冗長で扱いづらいと書かれています。
ではこれを誰でも読みやすくしようということで、次のサンプルコードが書かれています。
------------------------------------
P.108
次の例のように複数の値をタプルにまとめ、そのタプルの中に変数の値が存在するかどうかをin演算子でチェックします。
spam = ’cat’
spam in (’cat’, ’dog’, ’moose’)
True
------------------------------------
in演算子は「指定した要素が●●の中に含まれている」かを判定するときに使用されます。
ちなみに、このサンプルでは検索対象の候補をタプルにまとめています。なぜタプルだったのかというと、タプルは変更ができないため、固定された候補を表すのに向いているからだと思われます。
ただ、in演算子は実際にはリスト(list)、集合(set)、辞書(dict)でも使用することができます。リストは変更可能、タプルは変更不可、辞書ではinを使うとキーが検索対象になる、といった特徴を覚えておいて、必要に応じて選択したいですね。
ちなみに集合は、候補がたくさんあって、その中に特定の要素が含まれているかどうかを効率よく調べたいときの選択肢になるようです。テキストでは特に書かれていないので割愛しますが、興味がある方は調べてみてくださいね。
ご参考までに公式ドキュメントの集合のリンクを記載しておきます。
https://docs.python.org/ja/3.14/tutorial/datastructures.html#sets
それではきりが良いのでこちらで終了です。
今回もお付き合いいただきありがとうございました。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes