ここで、2 つのリストから値をフィルター処理する方法についての投稿を読みました。Python: 1 つのリストの内容に基づいて 2 つのリストから値を削除する方法
forandを使用して自分でコードを書こうとしまし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