Pythonはピットを削除循環たときに、リスト内の要素![電源を入れ]

 

ボーエン元のリンク:https://www.cnblogs.com/baihualin/p/10698651.html

リスト内の要素を削除するとき、正シーケンストラバーサルサイクルを使用しないでください、抗順トラバーサルを使用してください!

 

ADO、最初のケースコード:

コードをコピー
DEF試験(データ):
    私のデータの:
        data.remove(I)
    戻りデータ


データ= [1、2、3] 
プリント(テスト(データ))
コードをコピー


コードの顔が上記、一見、それは真実ではない、それは削除されたデータ要素として機能するための試験のように、空のリストをプリントアウトするだろうと思った、次のように実際に出力されます。

[2]

 

 

なぜこのような結果をしませんか?のは、どのような深さを分析してみましょう:

元のリストのメモリです。

data.remove(I)が削除され、「1」の第1の要素を介して初めて、リストは次のようになります。

(i)をdata.removeする第二を行う場合、私は、すなわち、第二の要素である '3「3」を削除し、その後、リストは次のようになります。

第三の要素のリストは、すなわち、[2]に戻すのループのうち、無有します。

 

 

どのようにこの問題を解決するには?私たちは、削除された逆の方法を使用することができます!

直接コードに:

コードをコピー
DEF試験(データ):
    私のデータの[:: - 1]:
        data.remove(I)
    戻りデータ


データ= [1、2、3] 
プリント(テスト(データ))
コードをコピー

この時点の実行では、出力は空のリストを発見されました

[]

 

 

逆の原理を削除し、次のとおりです。

元のリストのメモリです。

data.remove(I)を介して初めて削除「から3」の最後から二番目の元素であり、リストは次のようになります。

また、第2実行data.remove(I)I、すなわち、最後から二番目の要素である「2」「2」が削除、その後、リストは次のようになります。

data.remove(I)への3回目の実行は、私は三要素の逆数であるとき、すなわち「1」は、「1」が削除され、リストが空リストになり、!

 

 

概要:要素のリストで削除正のシーケンス、要素の削除の背後にある値は、前方上部と、削除漏れにつながります。逆の要素を削除すると、前部要素の値がリーンバックを削除しません、すべての要素の完全なリストをトラバースすることが可能です。

 

おすすめ

転載: www.cnblogs.com/lilinyuan5474/p/11655582.html
おすすめ