找回密码
 立即注册
首页 业界区 业界 python 列表元素全排列

python 列表元素全排列

肿抢 4 小时前
题目描述


  • 给定一个列表,对列表元素进行全排列,使得生成一个包含列表的列表,且全排列不能重复,例子:
    输入: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 的返回值是元组,不是列表
        点击查看代码
    1. num = [1, 2, 3, 3]
    2. from itertools import permutations
    3. all_permutations = list(list(i) for i in set(permutations(num)))
    4. print(all_permutations)
    复制代码
  • 自己写代码实现,使用递归,每次将列表中一个元素提取出来,然后让其他元素全排列,得到全排列的组合后,再将第一个元素插入到全排列的列表中的各个位置,就得到了想要的结果
        点击查看代码
    1. num = [1, 2, 3, 3]
    2. def fullnum(nums):
    3.         if len(nums) == 0:
    4.                 return None
    5.         elif len(nums) == 1:
    6.                 return [nums]
    7.         res = []
    8.         left = nums[0]
    9.         right = fullnum(nums[1:])
    10.         for i in right:
    11.                 for j in range(len(i)+1):
    12.                         result = i[:j] + [left] + i[j:]
    13.                         if result not in res:
    14.                                 res.append(result)
    15.         return res
    16. print(fullnum(num))
    复制代码

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册