aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/ipython/py2/IPython/utils/data.py
blob: 36a8aabd9515c9616c3f912f51c090e0349b31c1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# encoding: utf-8 
"""Utilities for working with data structures like lists, dicts and tuples. 
""" 
 
#----------------------------------------------------------------------------- 
#  Copyright (C) 2008-2011  The IPython Development Team 
# 
#  Distributed under the terms of the BSD License.  The full license is in 
#  the file COPYING, distributed as part of this software. 
#----------------------------------------------------------------------------- 
 
from .py3compat import xrange 
 
def uniq_stable(elems): 
    """uniq_stable(elems) -> list 
 
    Return from an iterable, a list of all the unique elements in the input, 
    but maintaining the order in which they first appear. 
 
    Note: All elements in the input must be hashable for this routine 
    to work, as it internally uses a set for efficiency reasons. 
    """ 
    seen = set() 
    return [x for x in elems if x not in seen and not seen.add(x)] 
 
 
def flatten(seq): 
    """Flatten a list of lists (NOT recursive, only works for 2d lists).""" 
 
    return [x for subseq in seq for x in subseq] 
     
 
def chop(seq, size): 
    """Chop a sequence into chunks of the given size.""" 
    return [seq[i:i+size] for i in xrange(0,len(seq),size)]