itertools.takewhile() と itertools.dropwhile() は似た動作をします。どちらも引数として、条件式と iterableオブジェクトを受け、itertools.takewhile()は「オブジェクトの先頭から条件を満たす要素を取り出す」、itertools.dropwhile()は「オブジェクトの先頭から条件を満たす要素を取り除く」という動作をします。
実際の動作は以下のようになります。
>>> from itertools import takewhile, dropwhile >>> data = [1, 4, 6, 4, 1] # takewhileは先頭から条件 # を満たす要素を取り出す >>> for i in takewhile(lambda x: x < 5, data): ... print(i) ... 1 4 # dropwhileは先頭から条件 # を満たす要素を取り除く >>> for i in dropwhile(lambda x: x < 5, data): ... print(i) ... 6 4 1
以下は str.lstrip() 相当の関数を、itertools.dropwhile() を用いて実装した例です。
>>> def lstrip(s, chars): ... return ''.join(dropwhile(chars.__contains__, s)) ... >>> lstrip("abcde", "ba") 'cde'
0 件のコメント:
コメントを投稿