def qsort(data): if len(data) <= 1: return data pivot = data[0] left, right = list(), list() for index in range(1, len(data)): if pivot > data[index]: left.append(data[index]) else: right.append(data[index]) #left = [ item for item in data[1:] if pivot > item] #right = [ item for item in data[1:] if pivot <= item] return qsort(left) + [pivot] + qsort(right)