输出后总是会只能删掉一个最值而无法删掉所有最值,如何做到删去所有最值?为什么在if后面加上.count(n)会报错?
![](https://profile-avatar.csdnimg.cn/ca8925eb6f834eb987a47e5f09e0c728_weixin_67443879.jpg!4)
请问这个问题我该怎么修改步骤
输出后总是会只能删掉一个最值而无法删掉所有最值,如何做到删去所有最值?为什么在if后面加上.count(n)会报错?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- CSDN专家-天际的海浪 2022-03-10 02:11关注
你不要修改正在循环的列表
改成这样
你题目的解答代码如下:numbers = eval(input()) n = max(numbers) m = min(numbers) res = [] for i in numbers: if i!=n and i!=m: res.append(i) print(res)
因为移除了一个元素之后其后面元素的索引值都会减一,列表长度也会减一。
但循环索引只会加1,不会跟着减1。这样会跳过一个元素.
比如一开始循环索引值是0,移除了索引值是0的元素之后,原来索引值为1的元素的索引值减一变成0。原来索引值为2的元素的索引值减一变成1。
下一次循环索引加1。移除索引值是1的元素(原来索引值为2的元素),原来索引值为1的元素就被跳过了。
对于一边循环一边删除的操作,可以用倒序循环。numbers = eval(input()) n = max(numbers) m = min(numbers) for i in range(len(numbers)-1,-1,-1): if numbers[i]==n or numbers[i]==m: numbers.pop(i) print(numbers)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥50 请教 麒麟系统挂载怎么安装
- ¥15 如何在ns3中实现路径的自由切换
- ¥20 SpringBoot+Vue3
- ¥15 IT从业者的调查问卷
- ¥65 LineageOs-21.0系统编译问题
- ¥30 关于#c++#的问题,请各位专家解答!
- ¥15 App的会员连续扣费
- ¥15 不同数据类型的特征融合应该怎么做
- ¥15 用proteus软件设计一个基于8086微处理器的简易温度计
- ¥15 用联想小新14Pro