リストがあります
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 ...]
ここで、...
は確認する必要がある条件を表します。