def permute(nums, start, end): # 如果起始索引等于结束索引,说明已经排列好了一个组合 if start == end: print(nums[:]) # 打印当前排列 else: # 遍历从起始索引到结束索引的每个元素 for i in range(start, end + 1): # 交换起始索引和当前遍历到的索引位置的元素 nums[start], nums[i] = nums[i], nums[start] # 递归调用permute函数,起始索引加1,继续排列剩余的元素 permute(nums, start + 1, end) # 回溯,将元素交换回来,以便进行下一次排列 nums[start], nums[i] = nums[i], nums[start] # 定义列表数据 data = [1, 2, 3, 4] # 调用permute函数进行全排列 permute(data, 0, len(data) - 1)