takewhileは第1引数で指定した判定関数がFalseになるまで第2引数の要素を残すイテレータ関数です。1度でも第1引数の判定関数がFalseになるとそれ以降の第2引数の要素は破棄されます。
dropwhile関数とは逆の動きになります。
takewhileは第1引数で指定した判定関数がFalseになるまで第2引数の要素を残すイテレータ関数です。1度でも第1引数の判定関数がFalseになるとそれ以降の第2引数の要素は破棄されます。
dropwhile関数とは逆の動きになります。
takewhile関数は第1引数の条件判定関数結果がTrueの間、第2引数のイテレータを保持し、条件判定関数の結果がFalseになった以降の値を破棄する関数です。
from itertools import takewhile
def f(x):
return (x%4!=0)
for i in takewhile(f,[1,2,3,4,5,6,7]):
print(i)
実行結果
1 2 3
f(x)はx=1, 2, 3の場合には値が1, 2, 3のため真理値判定がTrueになります。しかし4番目の要素である4は4%4=0で0!=0の真理値判定はFalseになり破棄されます。そのため[1,2,3]までイテレータとして保持され、4以降が破棄されます(下図参照)。
dropwhileでtakewhileとdropwhileの双方を使ってパスを区切る例をみています。以下のようなパスがあるとします。"C:\Users\Suzuki\Documents"ここで"C:\Users\Suzuki"と"Suzuki\Documents"に分けてみます。
from itertools import takewhile,dropwhile
import os
data=r'C:\User\Suzuki\Documents'
l1 =os.sep.join([ i for i in takewhile(lambda x: x!='Suzuki',data.split(os.sep))])+r'\Suzuki'
l2 =os.sep.join([ i for i in dropwhile(lambda x: x!='Suzuki',data.split(os.sep))])
print(l1)
print(l2)
実行結果
C:\User\Suzuki Suzuki\Documents
イテラブルを判定して真の間だけイテレータを保持します。一度Falseになるとそれ以降のデータは破棄します。
この記事へのコメント
コメントはまだありません。
コメントを送る