File: sorted.py

package info (click to toggle)
codespeak-lib 0.9.1-3
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 3,212 kB
  • ctags: 5,409
  • sloc: python: 33,390; ansic: 961; xml: 582; makefile: 90
file content (31 lines) | stat: -rw-r--r-- 765 bytes parent folder | download
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
builtin_cmp = cmp # need to use cmp as keyword arg

def _sorted(iterable, cmp=None, key=None, reverse=0):
    use_cmp = None
    if key is not None:
        if cmp is None:
            def use_cmp(x, y):
                return builtin_cmp(x[0], y[0])
        else:
            def use_cmp(x, y):
                return cmp(x[0], y[0])
        l = [(key(element), element) for element in iterable]
    else:
        if cmp is not None:
            use_cmp = cmp
        l = list(iterable)
    #print l
    if use_cmp is not None:
        l.sort(use_cmp)
    else:
        l.sort()
    if reverse:
        l.reverse()
    if key is not None:
        return [element for (_, element) in l]
    return l

try:
    sorted = sorted
except NameError:
    sorted = _sorted