网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > Python >

python 列表元素全排列

时间:2026-03-13 11:12

人气:

作者:admin

标签:

导读:题目描述 给定一个列表,对列表元素进行全排列,使得生成一个包含列表的列表,且全排列不能重复,例子: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 实现方式...

题目描述

  • 给定一个列表,对列表元素进行全排列,使得生成一个包含列表的列表,且全排列不能重复,例子:
    输入: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))
    
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信