Python の for ループでリスト要素を削除するにはどうすればいいですか? [重複] 質問する

Python の for ループでリスト要素を削除するにはどうすればいいですか? [重複] 質問する

リストがあります

a = ["a", "b", "c", "d", "e"]

以下のような for ループでこのリストの要素を削除したいと思います。

for item in a:
    print(item)
    a.remove(item)

しかし、うまくいきません。どうすればいいでしょうか?

ベストアンサー1

ループを使用してリストを反復処理しているときに、リストから要素を削除することはできませんfor

コードを書き直す最善の方法は、何をしようとしているかによって異なります。

たとえば、コードは次のものと同等です:

for item in a:
    print(item)
a[:] = []

あるいは、whileループを使用することもできます。

while a:
    print(a.pop())

条件に一致するアイテムを削除しようとしています。その後、次のアイテムに進みます。

すべての要素をコピーすることができますしない条件を2番目のリストに一致させます。

result = []
for item in a:
    if condition is False:
        result.append(item)
a = result

あるいは、filterまたはリストの内包表記を使用して、結果を に代入しますa

a = filter(lambda item:... , a)

または

a = [item for item in a if ...]

ここで、...は確認する必要がある条件を表します。

おすすめ記事