注册 登录
编程论坛 Python论坛

删除列表最大的两个数

kyletan0808 发布于 2019-05-04 12:42, 2195 次点击
大家好!
我想将列表中最大和最小的两个数删除,得到错误信息是参数()不在列表中代码如下:

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())) #调用主函数

到底怎么回事?求指教
4 回复
#2
kyletan08082019-05-04 12:58
错了。主函数应该是main(x)    不是number_remove(x)
#3
hello_py2019-05-05 09:10
可以先打印出str_to_int(number_list())以及它的type,看看错误提示得对不对
#4
lwy2xxj2019-05-05 13:54
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编辑过]

#5
我没注册2019-05-06 15:10
有个程序代码的编辑,排版就不会变了
1