2016年9月17日

itertools.groupby の紹介

itertools.groupby を紹介します。itertools.groupby は指定したキーに従って、連続要素をグループ分けします。

実際の動作例は以下のようになります。
指定したキー(ここでは lambda x: x % 2)の値が同じであれば、グループとされます。連続要素の順番は変わりません。

>>> from itertools import groupby

>>> ints = (1, 3, 2, 4, 1, 5, 3, 2, 2)
>>> for key, group in groupby(ints, key=lambda x: x % 2):
...     print(key)
...     print(list(group))
...     print('')
...
1
[1, 3]

0
[2, 4]

1
[1, 5, 3]

0
[2, 2]


具体的な使い方として、文字列のリストを頭文字を強調した形で文字出力する例を示す。
>>> from itertools import groupby

>>> names = ('ABC', 'Ada', 'ALGOL', 'C', 'C#', 'C++', 'CoffeeScript', 'Pascal', 'PHP', 'Prolog', 'Python')
>>> for k, g in groupby(names, key=lambda x: x[0]):
...     print(k + ' __________')
...     for i in g:
...         print(i)
... 
A _____________
ABC
Ada
ALGOL
C _____________
C
C#
C++
CoffeeScript
P _____________
Pascal
PHP
Prolog
Python

0 件のコメント:

コメントを投稿