Published

17-04-2018

←Home

dropwhileとtakewhileを使う

pythonの便利ライブラリitertools. その中のdropwhiletakewhileを使うときのメモ.

iteratorの例

100本ノック10章91で用いている単語アナロジー評価データを例に考えます。

このデータ中で": "で始まる行はセクション名を表す.例えば,": capital-common-countries"という行は,"capital-common-countries"というセクションの開始を表している.

言語処理100本ノック 2015より

dropwhile

条件がtrueの間無視(drop)して,falseになった場所からはじめる. 条件はlambda式を使う。

例えばfamilyというセクション以降のデータが欲しい時は下のようになる。

dropwhile(lambda x: x != ': family\n', f)

takewhile

条件がtrueの間に続けて,falseになったら終了.

例えばfamilyというセクションより前のデータだけ取得する時は下のようになる。

takewhile(lambda y: y == ': family\n', f)

合わせ技

: family以前は無視して、次の:になったら終了.

takewhile(lambda y: y == ': family\n' or not y.startswith(':'), dropwhile(lambda x: x != ': family\n', f)):

share:

Go Top