我试图根据需要在一行中发生的某些条件对表进行排序。
表格的简化版本:Number Time
1 23
2 45
3 67
4 23
5 11
6 45
7 123
8 34
。。。在
我要检查一下时间是不是连续45次。就像我需要检查第1-5行,然后第2-6行等等。。。然后在第一次也是最后一次打印并保存到文件中。比如,如果满足第2-6行的条件,我需要打印第2行和第6行的时间。条件满足后应停止检查。不需要检查其他行。到目前为止,我用两个temp变量实现了一个计数器来检查3个项目。它工作得很好。但是,如果我想检查连续发生30次的情况,我不能只手动创建30个临时变量。实现这一目标的最佳方法是什么?我想我只需要一个循环。谢谢!在
以下是我的部分代码:
^{pr2}$
我实施了巴库留提出的解决方案,它似乎奏效了。但是,将大量测试结合起来的最佳方法是什么?好像我需要检查几个条件。比如说:
五连续10个循环的效率小于40
连续5个循环的容量小于40
连续25个循环小于40次的时间
还有一些人。。。在
现在我刚开门csv.reader每次测试并运行函数。我想这不是最有效的方法。对不起,我只是个十足的傻瓜。在csvfiles = glob.glob('processed_data/*.stat')
for filename in csvfiles:
flag=[]
flag.append(filename[-12:-5])
reader = csv.reader(open(filename))
for a, row_group in enumerate(row_grouper(reader,10)):
if all(float(row[1]) < 40 for row in row_group):
str1= "Efficiency is less than 40 in cycles "+ str(a+1)+'-'+str(a+10) #i is the index of the first row in the group.
flag.append(str1)
break #stop processing other rows.
reader = csv.reader(open(filename))
for b, row_group in enumerate(row_grouper(reader,5)):
if all(float(row[3]) < 40 for row in row_group):
str1= "Capacity is less than 40 minutes in cycles "+ str(a+1)+'-'+str(a+5)
flag.append(str1)
break #stop processing other rows.
reader = csv.reader(open(filename))
for b, row_group in enumerate(row_grouper(reader,25)):
if all(float(row[3]) < 40 for row in row_group):
str1= "Time is less than < 40 in cycles "+ str(a+1)+'-'+str(a+25)
flag.append(str1)
break #stop processing other rows.
if len(flag)>1:
for i in flag:
print i
print '\n'