【问题标题】:How can I make sure the greater number is placed first?我怎样才能确保更大的数字放在第一位?
【发布时间】:2013-10-13 05:11:39
【问题描述】:

我有一个程序可以处理日志文件以将其缩小到两个项目。该程序运行良好,只是有时它会使两个数字倒退。例如,它最终得到的两个数字应该是 [1700, 1650],而不是 [1650, 1700]。如何确保值较高的数字列在第一位 [0],而较低的数字列在第二位 [1]?

import pylab  
from pylab import *  
from numpy import *  
from collections import Counter  

list_of_files=[('logfile.txt', 'Temp')]  
datalist = [( pylab.loadtxt(filename), label ) for filename, label in list_of_files]  
for data, label in datalist:  
  pylab.plot( data[:,0], data[:,1], label=label )  
  print data [:,1]    
  Temps = [k for k,v in Counter(data[:,1]).items() if v>1 and 1500<=k<2200]  
  print Temps 
  print ("Test="), 0.555*(Temps[0]-32)+.651*(Temps[1]-32)  

【问题讨论】:

  • Temps.sort() 后跟 Temps.reverse() ?
  • 脚本的复杂性与问题的简单性之间的差距令人震惊
  • 仅供参考,如果您使用pylab.plotpylab.loadtext 等,则不需要from pylab import *from numpy import *。只需import pylab 就足够了。使用*,这意味着您可以输入plot(不用先说pylab.),但我推荐第一个选项。 See here

标签: python collections numpy counter


【解决方案1】:

您可以像这样对列表进行反向排序:

Temps = [k for k,v in Counter(data[:,1]).items() if v>1 and 1500<=k<2200]
Temps = sorted(Temps, reverse=True)

【讨论】:

  • 是的!我尝试了答案 1 中的 2 行,它似乎工作正常。
猜你喜欢
  • 1970-01-01
  • 2013-06-30
  • 2021-05-08
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 2023-02-02
  • 2013-01-28
  • 1970-01-01
相关资源
最近更新 更多