- 150 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 07:59:37 ]
- # -*- 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から作成される値 で構成されているのかなと思っていたので ちょっと分からなくなってしまいました。 お手数ではございますが、解釈の仕方を教えていただけないでしょうか?
|

|