Pythonでリスト内の指定した文字以外をすべて置換する方法
リスト内の特定の文字だけを残し、それ以外の文字をすべて別の文字に置き換えたい場面は、データ整形やテキスト処理でよくあります。Pythonではリスト内包表記と「==」演算子を組み合わせることで、わずか1行のコードでこの処理を簡潔に実装できます。
サンプルコード
以下に具体的な実装例を示します。
my_list = ['P', 'Y', 'T', 'H', 'O', 'N', 'P', 'H', 'P']
print("元のリスト:")
print(my_list)
replace_char = '$' # 置き換え後の文字
retain_char = 'P' # 残したい文字
my_result = [element if element == retain_char else replace_char for element in my_list]
print("処理結果:")
print(my_result)
実行結果
元のリスト: ['P', 'Y', 'T', 'H', 'O', 'N', 'P', 'H', 'P'] 処理結果: ['P', '$', '$', '$', '$', '$', 'P', '$', 'P']
コードの解説
まず、複数の文字を要素とするリストを定義し、コンソールに表示します。
次に、置き換え後の文字(replace_char)と残したい文字(retain_char)の2つをそれぞれ変数として定義します。
リスト内包表記を使ってリストの各要素を順番に走査します。条件式「element == retain_char」により、現在の要素が残したい文字と一致する場合はそのまま新しいリストに追加され、一致しない場合は置き換え用の文字に差し替えられます。
生成された新しいリストは変数 my_result に代入されます。元のリスト my_list は変更されない点にも注目してください。
最後に、結果をコンソールへ出力して完了です。
補足:forループを使った書き方との比較
同じ処理は通常のforループでも記述できますが、リスト内包表記の方がコードが短く、意図も明確になります。
my_result = []
for element in my_list:
if element == retain_char:
my_result.append(element)
else:
my_result.append(replace_char)
条件分岐が単純な場合はリスト内包表記、処理が複雑になる場合は通常のループ、といった使い分けがおすすめです。
-
【Python】リスト内のすべての値が指定した値より大きいかどうかを判定する方法
リストと基準値が与えられたとき、リスト内のすべての要素がその基準値より大きいかどうかを判定するプログラムです。条件を満たしていれば「Yes」、一つでも基準値以下の要素が存在すれば「No」を出力します。 実行例 入力 : A=[10, 20, 30, 40, 50] 基準値 = 20 出力 : No 入力 : A=[10, 20, 30, 40, 50] 基準値 = 5 出力 : Yes アルゴリズム ステップ1: ユーザーから入力を受け取り、リストを作成する。 ステップ2: 基準値(チェック用の値)を入力する。 ステップ3: forループでリストを走査する。 ステップ3.1: 各要素を基準
-
Pythonでリスト内のすべての数値を乗算するプログラムの書き方
この記事では、Pythonを使ってリスト内のすべての数値を掛け合わせる(乗算する)方法を解説します。まず、ユーザーからの入力を受け取るためのリストを3つ作成し、ここでは「走査(トラバース)」という手法を利用します。 基本的な考え方はシンプルです。積を表す変数の初期値を 1 に設定し、リストの先頭から末尾まで要素を順にたどりながら、各数値をひとつずつ積に掛けていきます。すべての要素を処理し終えた時点で、変数にはリスト全体の積が格納されています。 実行例 入力: A=[5,6,3] 出力: 90 説明: 5×6×3 アルゴリズム ステップ1: すべての数値をリスト(lst)に入力する。 ステ