Changeset 5491 for django/branches/boulder-oracle-sprint/django/utils
- Timestamp:
- 06/18/07 11:43:17 (2 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/boulder-oracle-sprint/django/utils/itercompat.py
r4279 r5491 8 8 9 9 def compat_tee(iterable): 10 """Return two independent iterators from a single iterable. 10 """ 11 Return two independent iterators from a single iterable. 11 12 12 13 Based on http://www.python.org/doc/2.3.5/lib/itertools-example.html … … 26 27 return gen(next), gen(next) 27 28 29 def groupby(iterable, keyfunc=None): 30 """ 31 Taken from http://docs.python.org/lib/itertools-functions.html 32 """ 33 if keyfunc is None: 34 keyfunc = lambda x:x 35 iterable = iter(iterable) 36 l = [iterable.next()] 37 lastkey = keyfunc(l) 38 for item in iterable: 39 key = keyfunc(item) 40 if key != lastkey: 41 yield lastkey, l 42 lastkey = key 43 l = [item] 44 else: 45 l.append(item) 46 yield lastkey, l 47 28 48 if hasattr(itertools, 'tee'): 29 49 tee = itertools.tee 30 50 else: 31 51 tee = compat_tee 52 if hasattr(itertools, 'groupby'): 53 groupby = itertools.groupby
