【Python入門】最初の文字列にだけ含まれる文字を抽出して表示する方法
1つ目の文字列には存在するが、2つ目の文字列には存在しない文字を表示したい場合、ユーザーから2つの文字列を入力として受け取り、「set(集合)」を使って両者の差分を求めるのが効果的です。
Pythonには「set」というデータ型が標準で用意されています。setは重複しない一意な要素のみを格納できるデータ構造です。
setは、積集合(intersection)、差集合(difference)、和集合(union)、対称差(symmetric difference)といった集合演算を行う際に非常に便利です。
サンプルコード
以下に実際の実行例を示します。
my_str_1 = input("Enter the first string...")
my_str_2 = input("Enter the second string...")
my_result = list(set(my_str_1)-set(my_str_2))
print("The letters in first string but not in second string :")
for i in my_result:
print(i)実行結果
Enter the first string...Jane Enter the second string...Wane The letters in first string but not in second string : J
コードの解説
- ユーザーから2つの文字列を入力として受け取ります。
- それぞれの文字列をsetに変換し、差集合を計算します。
- 計算結果の差集合をlist(リスト)に変換します。
- そのリストを変数に代入します。
- for文で要素を1つずつ取り出し、コンソールに表示します。
補足:出力順序について
setは順序を持たないデータ構造のため、出力される文字の並び順は実行するたびに変わる可能性があります。アルファベット順など決まった順序で表示したい場合は、sorted()関数を使って次のようにソートするとよいでしょう。
my_result = sorted(set(my_str_1) - set(my_str_2))
このように「-」演算子による差集合の計算は、文字列比較やデータクレンジングなど、さまざまな場面で応用できる基本的かつ強力なテクニックです。
-
文字列が空かどうかをチェックするPythonプログラム
この記事では、与えられた文字列が空であるかどうかを判定するための解決策とアプローチについて解説します。 問題文 文字列が入力として与えられたとき、その文字列が空(空文字列)であるかどうかを判定する必要があります。 Pythonの文字列はイミュータブル(変更不可)な性質を持っているため、文字列に対して何らかの操作を行う際には注意して扱う必要があります。 ここでは、上記の問題を解決するための2つのアプローチを紹介します。 len()メソッドを使用する方法 等価演算子(==)を使用する方法 アプローチ1:len()メソッドを使う方法 len()関数で文字列の長さを取得し、その長さが0であれば空文
-
Pythonで文字列の前半と後半が同じ文字セットを持つかどうかを判定する方法
文字列が与えられたとき、その前半と後半がまったく同じ文字の集合を持っているかどうかを判定するのが、この記事のテーマです。解き方はシンプルです。まず文字列を中央で分割して2つの半分を作り、それぞれの半分に含まれる文字の種類と出現回数を比較します。もし文字列の長さが奇数の場合は、中央の1文字を無視し、残りの部分だけで判定を行います。アルゴリズムの手順ステップ1: 対象となる文字列を受け取ります。ステップ2: 入力文字列を中央で2つの部分に分割します。ステップ3: Counter(iterator) メソッドを使い、両方の部分をそれぞれ辞書(Counterオブジェクト)に変換します。各辞書は「文字を