猿问

为什么下面的Python代码只在for循环中删除一次元素?

所以我有以下代码


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)

它需要以下输入


5

2 3 6 6 5

这个想法是删除所有出现的顶部数字,但我有一个错误,它只删除顶部数字一次。我已经检查过是否打印该数字,如果它等于顶部数字,并且在测试时打印了两次,所以我知道它与 if 语句和 for 循环无关,所以它一定与我的方式有关删除它?如果是这样,为什么尽管处于 for 循环中,它只删除一次。我知道它的意思是只删除第一次出现的情况,但这就是为什么我有 for 循环。


富国沪深
浏览 75回答 1
1回答

郎朗坤

您不应该修改正在迭代的列表。这是一种使用函数式编程方法来实现您正在寻找的目标的方法。与您的方法相同,您将输入映射到整数,然后我们使用过滤器忽略输入中等于 n 的任何数字。n = int(input())numbers = list(filter(lambda x: x != n, map(int, input().split())))print(numbers)
随时随地看视频慕课网APP

相关分类

Python
我要回答