从列表中删除最大数字并将剩余数字相加

时间:2015-03-01 06:39:43

标签: python csv

我有一个数字列表(27763行,csv文件),并希望做以下事情:

  1. 在列表中查找最大数量并将其放入另一个名为maximumvalue的列表中
  2. 将剩余数字加在一起,计算它们的总和并将其放入名为totalvalue的另一个列表中
  3. 删除最大数量并反复执行上述步骤
  4. 我编写了以下脚本,但它只显示最大值列表中的13882个数字与27763完全不同:

    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 个答案:

答案 0 :(得分:0)

在没有看到您的数据的情况下,很难说 - 但您是否认为列表中的最大值可能超过1?对初始值进行排序可能会有所帮助:

maximuvalues = sorted(B, reverse=True)
totalvalues = [sum(B)]
for val in itertools.islice(maximumvalues, 1, None):
    totalvalues.append(totalvalues[-1] - val)