题目描述
- 给定一个列表,对列表元素进行全排列,使得生成一个包含列表的列表,且全排列不能重复,例子:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
实现方式
- 使用python 自带的itertools.permutations函数,专门用于生成排列,非常方便。但注意的是permutations 的返回值是元组,不是列表
点击查看代码- num = [1, 2, 3, 3]
- from itertools import permutations
- all_permutations = list(list(i) for i in set(permutations(num)))
- print(all_permutations)
复制代码 - 自己写代码实现,使用递归,每次将列表中一个元素提取出来,然后让其他元素全排列,得到全排列的组合后,再将第一个元素插入到全排列的列表中的各个位置,就得到了想要的结果
点击查看代码- num = [1, 2, 3, 3]
- def fullnum(nums):
- if len(nums) == 0:
- return None
- elif len(nums) == 1:
- return [nums]
- res = []
- left = nums[0]
- right = fullnum(nums[1:])
- for i in right:
- for j in range(len(i)+1):
- result = i[:j] + [left] + i[j:]
- if result not in res:
- res.append(result)
- return res
- print(fullnum(num))
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |