たとえば、リストを取得しました:myList=["asdf","ghjk","qwer","tyui"]
削除したいアイテムのインデックス番号のリストもあります: removeIndexList=[1,3]
(上記のリストからアイテム 1 と 3 を削除したい)
これを行う最良の方法は何ですか?
でリスト内包表記を使用しますenumerate()
。
newlist = [v for i, v in enumerate(oldlist) if i not in removelist]
代わりにremovelist
aを作成すると、物事をスピードアップするのに役立ちます。set
removeset = set(removelist)
newlist = [v for i, v in enumerate(oldlist) if i not in removeset]
デモ:
>>> oldlist = ["asdf", "ghjk", "qwer", "tyui"]
>>> removeset = set([1, 3])
>>> [v for i, v in enumerate(oldlist) if i not in removeset]
['asdf', 'qwer']