1. ホーム
  2. python

[解決済み] Pythonのforループでリストの要素を削除する方法は?重複

2022-12-18 07:38:29

質問

リストがある

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

このリスト内の要素を以下のようにforループで削除したい。

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

しかし、うまくいきません。どうしたらいいのでしょうか?

どのように解決するのですか?

を使って反復している間は、リストから要素を削除することは許されません。 for ループを使用している間は、要素を削除することはできません。

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

例えば、あなたのコードがそれに相当するとします。

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

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

while a:
    print(a.pop(0))

ある条件にマッチしたアイテムを削除しようとしています。その後、次のアイテムに移動します。

という要素を全てコピーすれば がない が条件にマッチするすべての要素を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 ...]

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