完全削除


list1=[[1,3,5] , [9,7,6] , [11,2,12]]


上のリストでは、各要素の最後の位置に10より大きい要素のみが残ってlist 1に保存されます。


保存後出力list 1

import implements
list1 = [[1,3,5][9,7,6][11,2,12]]
for i in list1:
	if i[2]<10:
    	list1.remove(i)
print(list1)
<출력>
[[9,7,6],[11,2,12]]
結果はなぜですか.
1.初めてfor文を通過したとき、iがlist[0]を指す場合、if条件に基づいて1がリストされます.remove(i)が実行されます.

2.後でfor文に再び向かう過程でlist 1~1)の過程により[1,3,5]が消失していることがわかる.ここまで悪くないけど、

3.for文,2)を再度実行した後,iterableに変化が見られた.不思議なことに、コンピュータがiterableで変化したとき、iにlist[0]値を追加したことを覚えていますか.iはlist[1]値から始まります.この部分に問題がある.iはlist[0]の値から削除されません.解決すべき部分はlistが変化してもfor文のiが変更したlist値を最初から代入することである.

そのため、for文iterableビットの具体的な表現❕❕

list1 = [[1,3,5][9,7,6][11,2,12]]
for i in list1[:]:
	if i[2]<10:
    	list1.remove(i)
print(list1)
[11,2,12]

リストt 1:をリストt 1[:]:に置き換え、インデックスを作成します。[:]は、最初の要素から最後の要素までの配列を表すリストです。 したがって、変更されたlist 1についても、iの最初の要素から代入することができる。