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

2024-05-16 22:39:08 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有以下代码

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

这个想法是删除所有出现的顶级数字,但我有一个bug,它只删除一次顶级数字。我已经检查过,如果它等于最上面的数字,就打印它,并且在测试时打印了两次,所以我知道它与if语句和for循环无关,所以它一定与我删除它的方式有关?如果是这样的话,为什么它在for循环中只删除一次呢。我知道这意味着只删除第一个事件,但这就是为什么我有for循环


Tags: 代码inmapforinputif数字顶级
1条回答
网友
1楼 · 发布于 2024-05-16 22:39:08

您不应该修改正在迭代的列表

下面是一种使用函数式编程方法实现所需功能的方法。与您的方法相同,您将输入映射为整数,然后我们使用过滤器忽略输入中等于n的任何数字

n = int(input())
numbers = list(filter(lambda x: x != n, map(int, input().split())))
print(numbers)

相关问题 更多 >