Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除数字列表的最大和最小副本_Python - Fatal编程技术网

Python 删除数字列表的最大和最小副本

Python 删除数字列表的最大和最小副本,python,Python,我只想删除列表的最大和最小副本 数字。示例:(114 4 5 68 8)结果:(14 5 6 8) 如何将max()min()函数与列表(set(x))组合 还是有别的办法 s = raw_input("Please Input a series of numbers") numbers = map(int, s.split()) numbers.remove(max(numbers)) numbers.remove(min(numbers)) average = sum(numbers)/f

我只想删除列表的最大和最小副本 数字。示例:(114 4 5 68 8)结果:(14 5 6 8

如何将max()min()函数与
列表(set(x))
组合

还是有别的办法

s = raw_input("Please Input a series of numbers")
numbers = map(int, s.split())

numbers.remove(max(numbers))
numbers.remove(min(numbers))
average = sum(numbers)/float(len(numbers))
print average

下面是使用一些
itertools
函数对该问题的一般解决方案。该解决方案将最小值和最大值的重复折叠为单个值,无论重复出现在何处:

from itertools import groupby,starmap,chain
#first we count the sequence length for each group of number in the list
c=[[number,len(list(seq))] for number,seq in groupby(numbers)]
print(c)

#we collapse the repetitions only for min and max
for group in c:
    if group[0] == min(numbers) or group[0]== max(numbers):
        group[1]=1       
print(c)

#we put back the list together
numbers=list(chain(*starmap(lambda x,n : [x]*n, c)))
print(numbers)
示例输出:

>>>numbers=[1,1,1,4,4,5,6,8,8,8]
[1, 4, 4, 5, 6, 8]
>>>numbers=[4,4,1,1,1,5,6,8,8,8]
[4, 4, 1, 5, 6, 8]
#edge case if there are multiple groups of min :
>>>numbers=[4,4,1,1,1,5,1,1,1,6,8,8,8]
[4, 4, 1, 5, 1, 6, 8]

列表是否总是排序?必须保持顺序?对OPhint的开放性问题太多。你需要一个循环。我会发布一个正确的答案,如果重新开放的话。作为将来的参考,这里的人不喜欢“吃我的问题”之类的问题。你应该始终表现出你自己已经努力解决了这个问题。展示一次尝试,展示预期结果与实际结果,给出一个理论(如果有)示例数据已排序,这允许使用与未排序数据不同(且更简单)的方法:从前面和后面删除正确数量的元素。因此,说明是否可以依赖数据进行排序,如果不能,结果的顺序是否需要与输入的顺序相同,这可能是一个好主意。请通过添加解释来改进此答案
>>>numbers=[1,1,1,4,4,5,6,8,8,8]
[1, 4, 4, 5, 6, 8]
>>>numbers=[4,4,1,1,1,5,6,8,8,8]
[4, 4, 1, 5, 6, 8]
#edge case if there are multiple groups of min :
>>>numbers=[4,4,1,1,1,5,1,1,1,6,8,8,8]
[4, 4, 1, 5, 1, 6, 8]