Python でリストから要素の出現をすべて削除する
-
Python でリストから要素のすべてのインスタンスを削除するには
filter()
関数を使用する - Python でリストから要素のすべてのインスタンスを削除するためにリスト内包表記を使用する
-
Python でリストからすべての要素のインスタンスを削除するには
remove()
関数を使用する
Python のリストでは、同じ要素を複数回出現させることができます。要素の値が他の要素と同じであっても、それぞれの要素は異なるインデックスを持っています。このインデックス番号を利用して、好きな要素に簡単にアクセスすることができます。
しかし、同じ要素が複数存在したくない状況もあるかもしれません。Python では、これを実現するためのさまざまな方法があります。
Python でリストから要素のすべてのインスタンスを削除するには filter()
関数を使用する
Python では、filter()
関数の助けを借りて、要素のフィルタリングが簡単になります。第 1 引数は関数で、第 2 引数にはセット、リスト、タプルなどを指定することができます。
例 1: filter()
関数と __ne__
の組み合わせ
myList = [2, 1, 3, 5, 1, 1, 1, 0]
myList = list(filter((1).__ne__, myList))
print(myList)
出力:
[2, 3, 5, 0]
この例では、1
の出現を削除したいリスト myList
があります。filter()
関数は別の関数 __ne__
を取ります。この関数は、値 1
がリスト myList
内に存在するかどうかに基づいて、True
または False
のいずれかのブール値を返します。値 1
がリスト内に存在する場合、それは単にそれを破棄します。次に、filter()
関数によって返されるものはすべて、list()
関数を使用してリストに変換されます。
例 2: filter()
関数と lambda
関数の組み合わせ
myList = [2, 1, 3, 5, 1, 1, 1, 0]
valueToBeRemoved = 1
result = filter(lambda val: val != valueToBeRemoved, myList)
print(list(result))
出力:
[2, 3, 5, 0]
関数 __ne__
を渡す代わりに、filter()
関数に lambda
関数を渡します。
リスト myList
から各要素を一つずつ取り出し、変数 val
に格納します。もし val
と valueToBeRemoved
の両方の要素が等しくなければ、val
の中にある要素だけが新しい変数 result
に追加されます。この result
をリストに変換するには、list()
関数を用いなければならません。
Python でリストから要素のすべてのインスタンスを削除するためにリスト内包表記を使用する
リスト内包表記は、コードの短い書き方です。リスト内包は通常の関数やループよりも高速です。
コード例:
myList = [1, 2, 3, 4, 2, 2, 3]
valueToBeRemoved = 2
myList = [value for value in myList if value != valueToBeRemoved]
print(myList)
出力:
[1, 3, 4, 3]
リスト myList
があり、そこから要素 2
の出現を削除したい。要素のすべてのインスタンスを削除するための主なコードは、角括弧 []
の中にあります。ここでは、まず for
ループが実行され、リスト myList
から値を取り出して変数 value
に格納します。その後、変数 value
内の値と変数 valueToBeRemoved
内の値が一致しない場合は、変数 value
の値を返してリスト myList
に格納するだけです。この処理はリストが空になるまで続きます。最後に、あなたが望む出力を含むリストができあがります。
Python でリストからすべての要素のインスタンスを削除するには remove()
関数を使用する
関数 remove()
は最初に出現した要素のみを削除します。もし remove()
関数を使って要素の出現をすべて削除したい場合は、for
ループか while
ループのいずれかのループを使うことができます。
myList = [2, 1, 3, 5, 1, 1, 1, 0]
valueToBeRemoved = 1
try:
while True:
myList.remove(valueToBeRemoved)
except ValueError:
pass
print(myList)
出力:
[2, 3, 5, 0]
上記のコードでは、リスト myList
を作成し、変数 valueToBeRemoved
を作成しました。この変数には、リストからオカレンスを削除する要素(この例では 1
)が含まれています。リストをループしているときに、その要素がリスト内にある場合は、remove()
関数を使用してリストから削除されます。
Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.
LinkedIn