为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

富国沪深 2023-09-26 14:11:49
所以我有以下代码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)


查看完整回答
反对 回复 2023-09-26
  • 1 回答
  • 0 关注
  • 48 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信