以下の関数は全て、イテレータを作成して返します。無限長のストリームのイテ レータを返す関数もあり、この場合にはストリームを中断するような関数かルー プ処理から使用しなければなりません。
| *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
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。