擅长:python、mysql、java
<p>恕我直言,我认为第一个解决方案设计过度了。这个任务不需要<code>numpy</code>或<code>math</code>,只需要一本字典。在循环过程中,如果最新值大于当前值,则更新字典;如果不大于当前值,则不执行任何操作。在第10项中,将字典中的值附加到输出列表并重置缓冲区。你知道吗</p>
<pre><code>with open('filename.txt', 'r') as opened_file:
data = opened_file.read()
rowsplitdata = data.split('\n')
colsplitdata = [u.split(' ') for u in rowsplitdata]
x = [[int(j[0]), float(j[1])] for j in colsplitdata]
output = []
buffer = {"max":0, "index":0}
count = 0
#this assumes x is a list of lists, not a numpy array
for u in x:
count += 1
if u[1] > buffer["max"]:
buffer["max"] = u[1]
buffer["index"] = u[0]
if count == 10:
output.append([buffer["index"], buffer["max"]])
buffer = {"max":0, "index":0}
count = 0
#append the remainder of the buffer in case you didn't get to ten in the final pass
output.append([buffer["index"], buffer["max"]])
output
[[102330, 9000.7], [102480, 7000.3]]
</code></pre>