Python 从列表中删除最大的数字,然后对剩余的数字求和
我有一个数字列表(27763行,csv文件),我想做以下事情:Python 从列表中删除最大的数字,然后对剩余的数字求和,python,csv,Python,Csv,我有一个数字列表(27763行,csv文件),我想做以下事情: 在列表中查找最大值并将其放入另一个名为maximumvalue的列表中 将剩余的数字相加,计算它们的总和,并将其放入另一个名为totalvalue的列表中 删除最大数量,并反复执行上述步骤 我已经编写了以下脚本,但它仅显示maximumvalue列表中的13882个数字,这与27763完全不同: sample=open("file.csv") sampledata=csv.reader(sample) B=[] max
sample=open("file.csv")
sampledata=csv.reader(sample)
B=[]
maximumvalues=[]
totalvalues=[]
for row in sampledata:
values=row[2]
B.append(float(values))
for value in B:
maximumvalues.append(max(B))
totalvalues.append(sum(B))
B.remove(max(B))
如果看不到您的数据,很难判断-但是您是否想到列表中可能有超过1个最大值?对初始值进行排序可能有助于:
maximuvalues = sorted(B, reverse=True)
totalvalues = [sum(B)]
for val in itertools.islice(maximumvalues, 1, None):
totalvalues.append(totalvalues[-1] - val)
这是正确的,但是如果只需要减去最大数量*它是发生次数,排序效率就很低