[issue28939] Groupby Is Roughly Equivalent To ...

2016-12-11 Thread Greg Solomon

New submission from Greg Solomon:

https://docs.python.org/3/library/itertools.html#itertools.groupby

I found the "equivalent" code a bit hard to read. Is there any merit in 
changing it to something a bit like the following ?

Kind Rgds, Greg

class groupby:
def __init__( self , iterable , key_function = ( lambda x: x ) ):
self.iterable = iter( iterable )
self.key_function = key_function
self.FINISHED = object()
try:
self.next_value = next( self.iterable )
except StopIteration: 
self.next_value = self.FINISHED
def __iter__( self ):
return self
def __next__( self ):
if self.next_value == self.FINISHED:
raise StopIteration
self.group_key_value = self.key_function( self.next_value )
return ( self.group_key_value , self._group() )
def _group( self ):
while self.next_value != self.FINISHED \
  and self.group_key_value == self.key_function( self.next_value ):
yield self.next_value
try:
self.next_value = next( self.iterable )
except StopIteration:
self.next_value = self.FINISHED 
return

--
assignee: docs@python
components: Documentation
messages: 282943
nosy: docs@python, greg.solomon
priority: normal
severity: normal
status: open
title: Groupby Is Roughly Equivalent To ...
versions: Python 3.7

___
Python tracker 
<http://bugs.python.org/issue28939>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue28939] Groupby Is Roughly Equivalent To ...

2016-12-11 Thread Greg Solomon

Greg Solomon added the comment:

Oh, I get it. There needs to be a next(self.it) loop in __next__ as well as in 
_grouper in case the user doesn't call _grouper.

My test was 
for ( k , g ) in groupby( L ):
print ( k , len( list( g ) ) )
so I was executing _grouper on every row.

Thanks !!!

--
resolution:  -> not a bug
status: open -> closed

___
Python tracker 
<http://bugs.python.org/issue28939>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com