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 | |
builtin_cmp = cmp |
|
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) |
|
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 |
| |