ホーム > 記事 > Python > python入門 > 【Python】【図解】takewhile関数

記事

【Python】【図解】takewhile関数

takewhileは第1引数で指定した判定関数がFalseになるまで第2引数の要素を残すイテレータ関数です。1度でも第1引数の判定関数がFalseになるとそれ以降の第2引数の要素は破棄されます。

dropwhile関数とは逆の動きになります。

目次

  1. takewhile関数とは
  2. takewhileの利用例
  3. まとめ

takewhile関数とは

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以降が破棄されます(下図参照)。

takewhile-function-fig1

↑目次

takewhileの利用例

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になるとそれ以降のデータは破棄します。

↑目次

この記事へのコメント

コメントはまだありません。

コメントを送る

必須
必須  
※ メールアドレスは公開されません
任意
必須
Loading...  画像の文字を入力してください