ループ内のいくつかのインデックスが欠落している理由を理解できませんか? たとえば、インデックス番号3です。 この方法で一意の要素を削除したいだけです。私は別のものを知っていますが、私はこの問題(または私)に何が間違っているのか分かりません。Python:for-loop wrong output
lst = [2, 7, 1, 9, 3, 5, 2, 1]
def check(lst):
result = lst
print(lst) #checking
for num in lst:
print("index:", num) #checking
print("num:", num) #checking
if lst.count(num) < 2:
print("count:", lst.count(num)) #checking
result.remove(num)
return(result)
print(check(lst))
出力
[2, 7, 1, 9, 3, 5, 2, 1]
index: 2
num: 2
index: 7
num: 7
count: 1
index: 9
num: 9
count: 1
index: 5
num: 5
count: 1
index: 1
num: 1
[2, 1, 3, 2, 1]
あなたはそれを繰り返すので、リストを変更しないでください!!!! –
あなたは['enumerate()'](https://docs.python.org/2/library/functions.html#enumerate)を探していると思います。また、**反復処理中にリストを変更することはありません**。それは悪い、悪いことになります.... –
あなたがそれを反復しているときに、あなたはリストから要素を削除しています。私は100%は確信していませんが、削除中にインデックスがそのまま維持されると考えています。つまり、インデックスが要素番号4を指していて、数字4を削除すると、インデックスがインクリメントされ、1つの要素をスキップします。より良い方法は、削除するアイテムのリストを保持し、このループの後に削除することです。 –