所以我有以下代碼n = int(input())arr = map(int, input().split())numList = list(arr)topNum = max(numList)for i in numList: if i == topNum: del numList[numList.index(i)]print(numList)它需要以下輸入52 3 6 6 5這個想法是刪除所有出現的頂部數字,但我有一個錯誤,它只刪除頂部數字一次。我已經檢查過是否打印該數字,如果它等于頂部數字,并且在測試時打印了兩次,所以我知道它與 if 語句和 for 循環無關,所以它一定與我的方式有關刪除它?如果是這樣,為什么盡管處于 for 循環中,它只刪除一次。我知道它的意思是只刪除第一次出現的情況,但這就是為什么我有 for 循環。
1 回答

郎朗坤
TA貢獻1921條經驗 獲得超9個贊
您不應該修改正在迭代的列表。
這是一種使用函數式編程方法來實現您正在尋找的目標的方法。與您的方法相同,您將輸入映射到整數,然后我們使用過濾器忽略輸入中等于 n 的任何數字。
n = int(input())
numbers = list(filter(lambda x: x != n, map(int, input().split())))
print(numbers)
添加回答
舉報
0/150
提交
取消