Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで指定した位置の行を削除する方法【popメソッド活用】

Pythonでネストされたリスト(二次元リスト)から、特定の位置にある行をまとめて削除したい場合があります。そんなときは、シンプルなループ処理とpop()メソッドを組み合わせることで、効率的に実現できます。

サンプルコード

以下は、複数のインデックスを指定して該当する行を一括削除する具体例です。

my_list = [[31, 42, 2], [1, 73, 29], [51, 3, 11], [0, 3, 51], [17, 3, 21], [1, 71, 10], [0, 81, 92]]

print("リストの内容:")
print(my_list)
my_index_list = [1, 2, 5]

for index in my_index_list[::-1]:
   my_list.pop(index)

print("出力結果:")
print(my_list)

実行結果

リストの内容:
[[31, 42, 2], [1, 73, 29], [51, 3, 11], [0, 3, 51], [17, 3, 21], [1, 71, 10], [0, 81, 92]]
出力結果:
[[31, 42, 2], [0, 3, 51], [17, 3, 21], [0, 81, 92]]

コードの解説

  • まず、ネストされたリスト(入れ子構造のリスト)を定義し、コンソールに表示します。

  • 次に、削除対象となる行のインデックス番号を整数値のリストとして定義します。この例では [1, 2, 5] の3つの位置が指定されています。

  • スライス記法 [::-1] を使って、インデックスリストを逆順(降順)に並べ替えてからループ処理を行います。

  • ループ内では pop() メソッドを呼び出し、指定されたインデックスの要素を1つずつ削除していきます。

  • 最終的なリストの内容がコンソールに出力されます。

なぜ逆順に処理するのか?

ここで重要なのが、インデックスリストを逆順にしてから削除するという点です。リストから要素を削除すると、それ以降の要素のインデックスが前に詰まってしまうため、昇順のまま処理すると意図しない行が削除されてしまいます。大きいインデックスから順に削除することで、未処理の要素の位置が変わらず、正確に目的の行だけを取り除くことができます。

  1. Pythonで文字列内の連続した重複文字を削除する方法

    ここでは、「R」と「L」のみで構成された文字列 s を扱います。目標は、連続する「R」および連続する「L」が一切存在しない状態にするために、削除する文字数を最小限に抑えることです。たとえば、入力が LLLRLRR の場合、出力は LRLR となります。解決の手順この問題を解決するには、以下の手順に従います。変数 seen に文字列の最初の文字を代入します。変数 ans にも文字列の最初の文字を代入します。インデックス1以降の各文字 i について以下を繰り返します。i が seen と異なる場合:ans に i を追加します。seen を i で更新します。最後に ans を返します。つまり、直

  2. Pythonで配列から特定の値をすべて削除する方法

    問題の概要配列 nums と値 val が与えられたとき、val と等しいすべての要素を配列内でその場で削除し、残りの要素数(新しい長さ)を求めます。例えば、入力が [0,1,5,5,3,0,4,5]、val が 5 の場合、値 5 は3つ含まれているため、削除後の長さは 5 になります。解決のアプローチこの問題は、書き込み位置を示すカウンタを1つ用意することで、追加のメモリを使わずに解決できます。手順は以下の通りです。カウント変数 count を 0 で初期化します。配列 nums の各インデックス i に対して次の処理を繰り返します。nums[i] が val と等しくない場合は、nums