【Python】リストのすべての要素から特定の数字を削除する方法
リスト内のすべての要素から特定の数字を取り除きたい場面は、データクレンジングや前処理などでよくあります。Pythonでは、反復処理(イテレーション)とset(集合)、str(文字列)操作を組み合わせることで、この処理をシンプルに実装できます。
サンプルコード
以下は、リストの各要素から数字「3」をすべて削除する例です。
my_list = [123, 565, 1948, 334, 4598]
print("The list is :")
print(my_list)
key = 3
print("The key is :")
print(key)
my_result = []
for element in my_list:
if list(set(str(element)))[0] == str(key) and len(set(str(element))) == 1:
my_result.append('')
else:
my_result.append(int(''.join([element_1 for element_1 in str(element) if int(element_1) != key])))
print("The result is :")
print(my_result)
実行結果
The list is : [123, 565, 1948, 334, 4598] The key is : 3 The result is : [12, 565, 1948, 4, 4598]
コードの解説
- まず、整数のリストを定義し、コンソールに表示します。
- 次に、削除対象となるキー(ここでは「3」)を定義して表示します。
- 結果を格納するための空のリスト my_result を用意します。
- リストを1要素ずつ反復処理し、各要素を「文字列 → set → リスト」の順に変換したうえで、先頭の要素がキーと一致するかどうかを確認します。
- あわせて「and」演算子により、setの長さが1(=その数値がキーと同じ数字1種類だけで構成されている)かどうかもチェックします。
- 両方の条件が成り立つ場合は、空文字列 '' を結果リストに追加します。
- 条件を満たさない場合は、リスト内包表記で各桁を走査し、キーと等しくない数字だけをつなぎ合わせて新しい文字列を再構築します。
- その文字列を int() で整数に戻し、結果リストへ追加します。
- 最後に、結果をコンソールに出力して完了です。
より読みやすい代替コード
同じ処理は、リスト内包表記を活用すると、より直感的で保守しやすいコードに書き換えることもできます。
my_list = [123, 565, 1948, 334, 4598]
key = 3
my_result = []
for num in my_list:
remaining = [ch for ch in str(num) if ch != str(key)]
my_result.append(int(''.join(remaining)) if remaining else '')
print(my_result)
このコードでは、各数値を文字列として1桁ずつ調べ、キー以外の数字だけを残します。すべての桁がキーと同じだった場合(たとえば 333 など)は空文字列になる点に注意してください。出力は先ほどの例と同じく [12, 565, 1948, 4, 4598] となります。
-
Pythonでリスト内の同じ要素を削除する方法【初心者向け解説】
問題の概要Pythonであるリスト(L1)から、別のリスト(L2)に含まれる共通の要素を削除したい場合、コードの書き方に少し注意が必要です。特によくあるミスとして、return文をforループの中に記述してしまうことが挙げられます。正しく動作するコード以下のコードでは、return文をforブロックの外側に移動しているのがポイントです。これにより、すべての要素のチェックが完了してから結果が返されます。また、最後のprint文では、誤字のある「remaove_new」ではなく、正しい関数名「remove_same」を呼び出すようにしましょう。def remove_same(L1, L2):
-
Pythonでインデックスを指定してリストから要素を削除する方法
Pythonでリストからインデックスを指定して要素を削除するには、主に2つの方法があります。del文を使う方法と、pop()メソッドを使う方法です。 del文で要素を削除する del文は、削除したい要素のインデックスを指定して使用します。指定した位置の要素がリストから取り除かれます。 >>> L1=[11,22,33,44,55,66,77] >>> del L1[2] >>> L1 [11, 22, 44, 55, 66, 77] 上記の例では、インデックス2(3番目の要素「33」)が削除され、リストの要素数が1つ減っています。del文は