import random
def quicksort( list ):
if list == []:
return []
else:
cut = list[0]
lesser = quicksort( [ x for x in list[1:] if x < cut ] )
greater = quicksort( [ x for x in list[1:] if x >= cut ] )
return lesser + [cut] + greater
# one line code
quicksort1 = lambda x: [] if len( x ) == 0 \
else quicksort1( [ s for s in x[1:] if s <= x[0] ] ) + \
[x[0]] + quicksort1( [ s for s in x[1:] if s > x[0] ] )
if __name__ == '__main__':
list = quicksort( [random.randint( 1, 10000 ) for i in xrange( 1000 )] )
print list
print '==' * 20
list = quicksort1( [random.randint( 1, 10000 ) for i in xrange( 1000 )] )
print list