pythonのlistから複数の項目をいっきに削除する方法を紹介します!
複数いっきに削除といっても
- インデックスを指定していっきに削除
- 要素の値を指定していっきに削除
この2通りの内容が考えられますが、前者は問題ないですよね?という想定で、今回のお題は「2. 削除したい要素を指定して削除する」のほうでいきます。
それでは早速、いっきにremoveしていこう!
普通に考えると、削除したい項目をループで回しながらremove()していく。
my_list = ['apple', 'orange', 'banana', 'lemon', 'pineapple']
to_remove = ['apple', 'lemon']
for r in to_remove:
my_list.remove(r)
=> ['orange', 'banana', 'pineapple']
ちなみに
my_list.remove_all(['apple', 'lemon'])
このように複数指定していっきに削除するメソッドは無さそうです。
そこで、次のようなやり方を提案してみる。
my_list = ['apple', 'orange', 'banana', 'lemon', 'pineapple']
to_remove = ['apple', 'lemon']
remained_list = [i for i in my_list if i not in to_remove]
=> ['orange', 'banana', 'pineapple']
一応、1行で書けて満足です。(笑)
実際には配列から削除するのではなくて、指定した要素を含まない新たな配列を作成するという考え方です。
配列そのものから要素を取り除きたい場合は前者、とにかく邪魔な要素を取り除いた配列があればいいのであれば後者を選択するといいかなと思います。
書き終わってから思ったんですが、タイトルで「removeする」と言っているのに、実際はremoveしているわけではないので、ちょっと意味合い的に違ってスミマセン💦といった気持ちになりました。。