def permuteRecursive(prefix, remaining): if remaining == []: return [prefix] result = [] for n in remaining: copy = [e for e in remaining] copy.remove(n) result += permuteRecursive(prefix + [n], copy) return result def permute(n): return permuteRecursive([],range(1, n+1)) print permute(3)