pythonはforループでpop配列の時にある要素をスキップする問題を解決します。
今日はpythonを勉強している時に問題があります。一つの配列を循環して一つの数を指定します。配列内に同じ要素があれば削除します。
1.メモリを追加できないという前提で、この配列内で処理します。
[0,1,2,3,0,4]//中間の2は削除されていませんでした。
そして私は修正しました。サイクルを全部出してみます。
ネット検索のいくつかの処理方法はこれに似合います。
[0,1,3,0,4]
知識を補充します:pythonの中でfor循環(continue、break、pass)の用法
1、continueは現在をスキップして次のサイクルを実行します。
2、breakは直接循環を中断し、もう実行しない。
3、パスは何も操作しないで、循環します。
以上は個人の経験ですので、参考にしていただければと思います。もし間違いがあったり、完全に考えていないところがあれば、コメント検討を歓迎します。
1.メモリを追加できないという前提で、この配列内で処理します。
nums = [0,1,2,2,3,0,4,2]
val = 2
for i in nums:
if(i == val):
idx = nums.index(i)
nums.pop(idx)
print(nums)
最初はこう書くと出力します。[0,1,2,3,0,4]//中間の2は削除されていませんでした。
そして私は修正しました。サイクルを全部出してみます。
0loop [0, 1, 2, 2, 3, 0, 4, 2]
1loop [0, 1, 2, 2, 3, 0, 4, 2]
2loop [0, 1, 2, 3, 0, 4, 2]//
3loop [0, 1, 2, 3, 0, 4, 2]
4loop [0, 1, 2, 3, 0, 4, 2]
5loop [0, 1, 2, 3, 0, 4, 2]
6loop [0, 1, 2, 3, 0, 4]
理由はPythonでforサイクルはローズマリーで実現されているため、ポップメソッドは現在の要素を削除した後、削除された位置は後ろのカバーによって、サイクルは次の要素に自動的に指し、その2がスキップされたのと同じです。ネット検索のいくつかの処理方法はこれに似合います。
for i in nums[:]: // nums[:] , 。
if(i == val):
idx = nums.index(i)
nums.pop(idx)
出力[0,1,3,0,4]
知識を補充します:pythonの中でfor循環(continue、break、pass)の用法
1、continueは現在をスキップして次のサイクルを実行します。
l = ['a','b','c','d','e']
for i in l: #i l
if i == 'c':
continue #continue
print(i)
2、breakは直接循環を中断し、もう実行しない。
l = ['a','b','c','d','e']
for i in l:
if i == 'c':
break #break ,break
print(i)
3、パスは何も操作しないで、循環します。
l = ['a','b','c','d','e']
for i in l: #i l
if i == 'c':
pass
print(i)
以上は個人の経験ですので、参考にしていただければと思います。もし間違いがあったり、完全に考えていないところがあれば、コメント検討を歓迎します。