以下の関数は全て、イテレータを作成して返します。無限長のストリームのイテ レータを返す関数もあり、この場合にはストリームを中断するような関数かルー プ処理から使用しなければなりません。
*iterables) |
def chain(*iterables): for it in iterables: for element in it: yield element
[n]) |
def count(n=0): while True: yield n n += 1
count()はオーバーフローのチェックを行いません。このため、
sys.maxint
を超えると負の値を返します。この動作は将来変更されま
す。
iterable) |
def cycle(iterable): saved = [] for element in iterable: yield element saved.append(element) while saved: for element in saved: yield element
cycleはこのツールキットの中で唯一、大きなメモリ領域を使用し ます。使用するメモリ量はiterableの大きさに依存します。
predicate, iterable) |
def dropwhile(predicate, iterable): iterable = iter(iterable) for x in iterable: if not predicate(x): yield x break for x in iterable: yield x
predicate, iterable) |
True
となる要素だけを返すイテレータを作成します。
predicateがNone
の場合、値が真であるアイテムだけを返しま
す。この関数は以下のスクリプトと同等です:
def ifilter(predicate, iterable): if predicate is None: predicate = bool for x in iterable: if predicate(x): yield x
predicate, iterable) |
False
となる要素だけを返すイテレータを作成します。
predicateがNone
の場合、値が偽であるアイテムだけを返しま
す。この関数は以下のスクリプトと同等です:
def ifilterfalse(predicate, iterable): if predicate is None: predicate = bool for x in iterable: if not predicate(x): yield x
function, *iterables) |
None
の場合、引数のタプルを返します。
map()と似ていますが、最短のiterableの末尾まで到達した後は
None
を補って処理を続行するのではなく、終了します。これは、
map()に無限長のイテレータを指定するのは多くの場合誤りですが
(全出力が評価されてしまうため)、imap()の場合には一般的で役
に立つ方法であるためです。この関数は以下のスクリプトと同等です:
def imap(function, *iterables): iterables = map(iter, iterables) while True: args = [i.next() for i in iterables] if function is None: yield tuple(args) else: yield function(*args)
iterable, [start,] stop [, step]) |
None
であれば、無限に、もしく
はiterableの全要素を返すまで値を返します。None
以外ならイテレー
タは指定された要素位置で停止します。通常のスライスと異なり、
start、stop、stepに負の値を指定する事はできません。
配列化されたデータから関連するデータを取得する場合(複数行からなるレ
ポートで、三行ごとに名前が指定されている場合など)に使用します。この関
数は以下のスクリプトと同等です:
def islice(iterable, *args): s = slice(*args) next, stop, step = s.start or 0, s.stop, s.step or 1 for cnt, element in enumerate(iterable): if cnt < next: continue if stop is not None and cnt >= stop: break yield element next += step
*iterables) |
def izip(*iterables): iterables = map(iter, iterables) while iterables: result = [i.next() for i in iterables] yield tuple(result)
バージョン2.3.1 以降で変更された 仕様: イテレート可能オブジェクトを指定しない場合、TypeError 例外を送出する代わりに長さゼロのイテレータを返します。
object[, times]) |
def repeat(object, times=None): if times is None: while True: yield object else: for i in xrange(times): yield object
function, iterable) |
function(a,b)
、starmap()では
function(*c)
のように呼び出します。この関数は以下のスクリプトと
同等です:
def starmap(function, iterable): iterable = iter(iterable) while True: yield function(*iterable.next())
predicate, iterable) |
def takewhile(predicate, iterable): for x in iterable: x = iterable.next() if predicate(x): yield x else: break
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。