ここで、2 つのリストから値をフィルター処理する方法についての投稿を読みました。Python: 1 つのリストの内容に基づいて 2 つのリストから値を削除する方法
for
andを使用して自分でコードを書こうとしましzip
たが、結果が間違っています。これを理解するのを手伝ってくれる人はいますか?
xVar = [1, 2, 3, 4, 5, 6, 7]
yVar = [11, 22, 33, 44, 55, 66, 77]
z = zip(xVar, yVar)
zFiltered = [(x, y) for x, y in z if y < 50]
print zFiltered # Correct, prints [(1, 11), (2, 22), (3, 33), (4, 44)]
for (x, y) in z:
if y > 50:
z.remove((x, y))
print z # Wrong, prints [(1, 11), (2, 22), (3, 33), (4, 44), (6, 66)]
なぜこうなった?を使用しようとしたところ、の値がである がスキップpdb
された後、インデックスを介して割り当てていることがわかりました。削除すると元のインデックスに違反します。そうであれば、ここでステートメントを使用して同じことを行うにはどうすればよいですか? ここに他の落とし穴はありますか?z.remove((5, 55))
(x, y)
(7, 77)
(6, 66)
for
(x, y)
(5, 55)
for