Pythonの文字列に対する論理演算子(and・or)の挙動と使い方
Pythonでは、論理演算子 and と or を文字列に対しても適用できます。空文字列("")はブール値として False と評価されます。まずは、この2つの論理演算子がそれぞれどのような動作をするのかを確認しましょう。
and演算子・or演算子の基本動作
and 演算子は、式の中に偽(falsy)と評価される値があれば最初のその値を返し、すべて真(truthy)であれば最後の値を返します。
一方、or 演算子は、式の中に真(truthy)と評価される値があれば最初のその値を返し、すべて偽(falsy)であれば最後の値を返します。
| 演算 | 結果 |
|---|---|
| x and y | x が偽なら x、そうでなければ y |
| x or y | x が偽なら y、そうでなければ x |
| not x | x が偽なら True、そうでなければ False |
サンプルコード
以下は、Pythonで文字列に対して論理演算子を使用する例を示したプログラムです。
str1 = ""
str2 = "python"
print(repr(str1 and str2))
print(repr(str2 and str1))
print(repr(str1 or str2))
print(repr(str2 or str1))
str1 = "Hello "
print(repr(str1 and str2))
print(repr(str2 and str1))
print(repr(str1 or str2))
print(repr(str2 or str1))
print(repr(not str1))
str2 = ""
print(repr(not str2))
str2 = "hello"
print("Hello == hello: ", str1 == str2)
出力結果
'' '' 'python' 'python' 'python' 'Hello ' 'Hello ' 'python' False True Hello == hello: False
結果のポイント
str1 and str2:str1が空文字列(False)と評価されるため、str1('')がそのまま返されます。str1 or str2:str1が空文字列(False)のため、次に評価された str2('python')が返されます。not str1:str1が空文字列でない場合(Trueと評価される場合)、notの結果はFalseになります。逆に空文字列ならTrueが返ります。Hello == hello:文字列比較では大文字と小文字が区別されるため、結果はFalseとなります。
このように、Pythonの論理演算子は True/False を返すのではなく、オペランドの値そのものを返すという特徴があります。文字列の有無を判定する条件分岐などで頻繁に活用される重要な挙動なので、しっかり押さえておきましょう。
-
Pythonで文字列を逆順に反転する方法|追加メモリ不要のインプレース手法
文字の配列が与えられたとき、追加のメモリ領域を使用せずに文字列を逆順に反転することを考えます。たとえば、入力が [H, E, L, L, O] である場合、期待される出力は [O, L, L, E, H] となります。 解法のアプローチ この問題は「Two Pointers(ツーポインタ)」と呼ばれる定番のテクニックで効率的に解けます。考え方はシンプルで、配列の両端から中央に向かって文字を交換していくだけです。 手順 2つのポインタを用意します:start = 0、end = 文字列の長さ - 1 s[start] と s[end] の文字を入れ替えます start を1つ増やし、end を
-
Pythonのcasefold()メソッドとは?文字列の小文字変換と比較方法を解説
Pythonのcasefold()は、文字列内の英字をすべて小文字に変換するためのメソッドです。lower()と似ていますが、より積極的な変換を行う点が特徴で、ドイツ語の「ß」が「ss」に変換されるなど、国際化対応において強力な働きをします。2つの文字列に対してcasefold()を適用すれば、大文字・小文字の違いを無視して値を一致させることができます。そのため、ユーザー入力の比較や検索処理などで非常に役立ちます。casefold()の基本的な使い方次の例では、文字列にcasefold()を適用し、すべて小文字に変換された結果を出力しています。コード例string = BestTutorial