リスト要素を値で削除する簡単な方法はありますか? 質問する

リスト要素を値で削除する簡単な方法はありますか? 質問する

リストに値が存在する場合(存在しない可能性もあります)は、リストから値を削除したいと思います。

a = [1, 2, 3, 4]
b = a.index(6)

del a[b]
print(a)

上記ではエラーが発生します:

ValueError: list.index(x): x not in list

だから私はこうしなければなりません:

a = [1, 2, 3, 4]

try:
    b = a.index(6)
    del a[b]
except:
    pass

print(a)

しかし、もっと簡単な方法はないのでしょうか?

ベストアンサー1

要素の最初の出現を削除するには、list.remove:

>>> xs = ['a', 'b', 'c', 'd']
>>> xs.remove('b')
>>> print(xs)
['a', 'c', 'd']

要素の出現をすべて削除するには、リストの理解:

>>> xs = ['a', 'b', 'c', 'd', 'b', 'b', 'b', 'b']
>>> xs = [x for x in xs if x != 'b']
>>> print(xs)
['a', 'c', 'd']

おすすめ記事