# -*- coding: utf-8 -*-
import re
data = ur"""1
998.7 1003.1 -- -- -- 6.0 10.9 1.8 36 16 2.6 4.8 北西 9.4 北西 6.9 -- -- 晴後一時曇 快晴
2
1014.6 1019.1 -- -- -- 7.0 12.1 2.7 43 24 2.5 5.0 北西 9.4 北北西 9.0 -- -- 快晴 晴後曇"""
for rec in [reduce(lambda r,(i,v): r + [v] if i in [0,5] else r,
enumerate(line.split()),
[])
for line in
data.split('\n') if not re.search('^\d{1,2}$', line)]:
print rec[0], "\t", rec[1]

分からない事があるので教えてください。
上記のr,i,v変数がよく分かっておりません。
動きから想像するとrは[]で
iはenumerate(line.split())の0,1,2…
vはenumerate(line.split())の998.7,1003,1…
となるような気がするのですが

私のイメージでは
lambdaの引数はenumerate(line.split())の値なので
0,1,2…のシーケンシャルな値と998.7,1003.1等のdataから作成される値
で構成されているのかなと思っていたので
ちょっと分からなくなってしまいました。

お手数ではございますが、解釈の仕方を教えていただけないでしょうか?