Unexpected Behavior of itertools.groupby

Viewed 1047

This is the observed behavior:

In [4]: x = itertools.groupby(range(10), lambda x: True)

In [5]: y = next(x)

In [6]: next(x)
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
<ipython-input-6-5e4e57af3a97> in <module>()
----> 1 next(x)

StopIteration: 

In [7]: y
Out[7]: (True, <itertools._grouper at 0x10a672e80>)

In [8]: list(y[1])
Out[8]: [9]

The expected output of list(y[1]) is [0,1,2,3,4,5,6,7,8,9]

What's going on here?

I observed this on cpython 3.4.2, but others have seen this with cpython 3.5 and IronPython 2.9.9a0 (2.9.0.0) on Mono 4.0.30319.17020 (64-bit).

The observed behavior on Jython 2.7.0 and pypy:

Python 2.7.10 (5f8302b8bf9f, Nov 18 2015, 10:46:46)
[PyPy 4.0.1 with GCC 4.8.4]

>>>> x = itertools.groupby(range(10), lambda x: True)
>>>> y = next(x)
>>>> next(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>>> y
(True, <itertools._groupby object at 0x00007fb1096039a0>)
>>>> list(y[1])
[]
2 Answers
Related