所以我有以下代码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
提交
取消