引用:この質問は、ネチズンの助けを求める要求から生じました。ウォーターグループのドラゴンキングとして、この質問に答えるのが私の義務です。最初にトピックを見てみましょう。
この質問を取得します。質問の意味は非常に明確です。2を含むリスト内の要素を削除してから、削除された新しいリストを出力する必要があります。私が最初に考えたのは、forループを使用して文字列をトラバースし、文字列演算子xをsで使用し(xがsのサブ文字列の場合、Trueを返し、それ以外の場合はFalseを返す)、if関数を使用し、Trueの場合は削除する(削除する)ことでした。要素。最後に、新しいリストが出力されます。
アイデアコードと実行結果は次のとおりです(これは間違っています)
エラーインスタンス
出力結果を確認します。元のリストと比較すると、2を含む一部の要素が削除されていますが、完全には削除されていません。なぜですか。
リスト要素の添え字に従ってpythonがトラバースすることを分析してみましょう。したがって、要素123の添え字は1であり、要素212の添え字は2です。 S.removeは最初のループで実行され、要素123が削除されます。 2番目のループに入るとき! ! !ここでポイントがあります。この時点で要素123が削除されているため、要素212の添え字が1から0に変更され、要素434の添え字が2から1に変更されていることに注意してください。添え字0は最初のループで実行されたため、2番目のループは添え字1の要素を探します。
この時点で、出力結果で212が削除されなかった理由をすでに知っている必要があります。これは、これら2つのアイテムがpythonによってまったく検出されず、前の要素の位置にあり、定期的な検査を免れたためです。要素1215が削除されないのはなぜですか? ?その添え字が前の要素231の位置になるため、Python兄弟の定期的なチェックを免れました。
わかりました、エラーの原因が見つかりました、それを解決する方法は?トラバーサルは道路のようなもので、道路の最初から最後まで、または道路の終わりから最初まで歩くことができます。ちょうど今、私たちは正の順序でトラバースしていましたが、問題を解決できませんでした。その逆はどうですか?それを試してみてください。
逆トラバーサルの構造は次のようになります。foriinrange(len(s)-1、-1、-1)
コードと実行結果は次のとおりです(これは正しいです)
正しい例
出力したい結果が得られたことがわかります。逆の順序がここに表示されない理由についてはこれ以上説明がありません(ハハハの説明方法がわからないため)。forループを使用して要素をトラバースおよび削除することを忘れないでください。前方にトラバースしないと、リストが範囲外になります。
removeメソッドを使用する以外に他のオプションはありますか?もちろん、いくつかのpythonはありますが、他の多くの関数はありません。
リストリバーストラバーサル(およびその他)を実装するには、いくつかの方法があります。
さまざまな方法のまとめ
これまでのところ、Pythonリストの逆トラバーサルの実装に関するこの記事はここで紹介されています。Pythonリストの逆トラバーサルのより関連性の高いコンテンツについては、ZaLou.Cnを検索してください。
Recommended Posts