1

リストを反復処理しながら、リストから要素を削除する必要があります(コードで参照されているため、新しいリストを作成できません)。

私が思いついた最高のものは次のとおりです。

last_index = len(somelist) - 1
for (index,item) in enumerate(reversed(somelist)):
    if somecondition(item):
        del somelist[last_index - index]

より良い選択肢はありますか?私はこの投稿とこれも見ましたが、提供されたソリューションはどれも効率的でも簡潔でもありません(IMHO)。

4

1 に答える 1

2

リスト内包表記 + スライス割り当てを使用できますが、これは確かにより簡潔です-効率についてはわかりません(ただし、要素をシフトし続ける必要がないため、その点でもうまくいくと思います項目を削除するたびに一覧表示 ...)

somelist[:] = [ x for x in somelist if not somecondition(x) ]
于 2013-02-07T16:09:20.213 に答える