标题:删除列表最大的两个数
只看楼主
kyletan0808
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2019-4-11
结帖率:50%
已结贴  问题点数:20 回复次数:4 
删除列表最大的两个数
大家好!
我想将列表中最大和最小的两个数删除,得到错误信息是参数()不在列表中代码如下:

import heapq #导入heapq模块
def number_list():  #获取用户输入
 number = []
 m = input("Enter a value (blank line to quit):")
 while m != " ":
    number.append(m)
    m = input("Enter a value (blank line to quit):")
 return number
   
def str_to_int(c): #字符转换整数

  c = [int(c[i]) for i in range(len(c))]
  return c
 
def mian(x): #获取整数列表并删除最大的两个数
    x.remove(heapq.nlargest(2,x))  #执行到这里的时候说 x not in list.
    print(x)   
  
number_remove(str_to_int(number_list())) #调用主函数

到底怎么回事?求指教
搜索更多相关主题的帖子: 删除列 最大的 两个数 def number 
2019-05-04 12:42
kyletan0808
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2019-4-11
得分:0 
错了。主函数应该是main(x)    不是number_remove(x)
2019-05-04 12:58
hello_py
Rank: 2
等 级:论坛游民
威 望:1
帖 子:9
专家分:27
注 册:2019-4-21
得分:7 
可以先打印出str_to_int(number_list())以及它的type,看看错误提示得对不对
2019-05-05 09:10
lwy2xxj
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:36
专家分:148
注 册:2019-4-8
得分:7 
x.remove(heapq.nlargest(2,x))
heapq.nlargest(2,x)是一个一维数组
x也是一个一维数组
当然不存在

而且 heapq.nlargest(2,x) 这个意思是,取数组x中两个最大的数字,不是最大和最小
如果你要删的话,你应该把数字里面的数据取出来,然后再删除,代码如下:
for removedata in heapq.nlargest(2,x):
    x.remove(removedata )
print(x)

最小两个数字的用法为:nsmallest(2,x)



[此贴子已经被作者于2019-5-5 13:57编辑过]

2019-05-05 13:54
我没注册
Rank: 3Rank: 3
等 级:论坛游民
威 望:6
帖 子:9
专家分:54
注 册:2019-4-11
得分:7 
有个程序代码的编辑,排版就不会变了
2019-05-06 15:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-494529-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.366687 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved