我有两个列表,我想在之前与一个索引进行比较:
for (min,max) in zip(csv_parse(2010)['min'],csv_parse(2010)['max']):
基本上我想要这样的东西:
if min> min(后退一个增量)和max<最大值(回到增量值)
然后,做点什么。
谢谢!
答案 0 :(得分:3)
from itertools import izip
prev_min, prev_max = float('inf'), float('-inf')
for new_min, new_max in izip(csv_parse(2010)['min'], csv_parse(2010)['max']):
if (new_min > prev_min) and (new_max < prev_max):
#do something
prev_min, prev_max = new_min, new_max
如果执行想要对第一项“做某事”,请将prev_min
和prev_max
的值切换到循环上方。
此外,您可能希望将izip
用于此类内容。你也可能不想解析你的csv两次(一次是min,一次是max)但是我不知道肯定没看到csv_parse
是什么。
答案 1 :(得分:0)
您可以执行以下操作:
min_values = csv_parse(2010)['min']
max_values = csv_parse(2010)['max']
for (prev_min, current_min, prev_max, current_max) in zip(min_values, min_values[1:], max_values, max_values[1:]):
if current_min > prev_min and current_max < prev_max:
…
此解决方案背后的想法是创建“先前值”列表以及“当前值”列表(…[1:]
)。