15

たとえば、リストを取得しました:myList=["asdf","ghjk","qwer","tyui"]
削除したいアイテムのインデックス番号のリストもあります: removeIndexList=[1,3](上記のリストからアイテム 1 と 3 を削除したい)

これを行う最良の方法は何ですか?

4

2 に答える 2

20

でリスト内包表記を使用しますenumerate()

newlist = [v for i, v in enumerate(oldlist) if i not in removelist]

代わりにremovelistaを作成すると、物事をスピードアップするのに役立ちます。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']
于 2013-09-16T21:28:14.217 に答える