32 lines
		
	
	
		
			765 B
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			765 B
		
	
	
	
		
			Python
		
	
	
	
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
 |