Python循环实现n的全排列功能


Posted in Python onSeptember 16, 2019

描述:

输入一个大于0的整数n,输出1到n的全排列:

例如:

n=3,输出[[3, 2, 1], [2, 3, 1], [2, 1, 3], [3, 1, 2], [1, 3, 2], [1, 2, 3]]
n=4,输出[[4, 3, 2, 1], [3, 4, 2, 1], [3, 2, 4, 1], [3, 2, 1, 4], [4, 2, 3, 1], [2, 4, 3, 1], [2, 3, 4, 1], [2, 3, 1, 4], [4, 2, 1, 3],
[2, 4, 1, 3], [2, 1, 4, 3], [2, 1, 3, 4], [4, 3, 1, 2], [3, 4, 1, 2], [3, 1, 4, 2], [3, 1, 2, 4], [4, 1, 3, 2], [1, 4, 3, 2],
[1, 3, 4, 2], [1, 3, 2, 4], [4, 1, 2, 3], [1, 4, 2, 3], [1, 2, 4, 3], [1, 2, 3, 4]]

思路:

为1时,结果为1
为2时,结果就是两种:1,2 2,1(1的前后插入)
为3时,结果就是六种:1,2,3 1,3,2 3,2,1 (1,2的前中后插入)
3,2,1 2,3,1 2,1,3 (2,1的前中后插入)

代码:

import copy
def full_arrange(n):
  data = [] # 中间结果
  res = [] # 最终结果
  if n == 1 :
    return 1
  res = [[1]]
  for i in range(2, n+1):
    for j in range(len(res)): # 遍历res数组(二维数组)
      for x in range(len(res[j])+1): # 遍历res数组中的元素(一维数组)
        data = copy.copy(res[j]) # 浅拷贝
        data.insert(x,i) # 在一维数组的不同位置插入元素,获得新的数组
        res.append(data)
        x += 1
      j += 1
    # 删除多余数组(原始数组) 最后保留的数据(一维数组的长度) == i
    while True:
      if len(res[0]) != i:
        res.remove(res[0])
      else:
        break
    i += 1
  return res
print(full_arrange(n))

总结

以上所述是小编给大家介绍的Python循环实现n的全排列功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python数据结构之二叉树的遍历实例
Apr 29 Python
Python简明入门教程
Aug 04 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
Python OpenCV处理图像之图像直方图和反向投影
Jul 10 Python
python编程使用协程并发的优缺点
Sep 20 Python
Python中利用aiohttp制作异步爬虫及简单应用
Nov 29 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
python实现电子书翻页小程序
Jul 23 Python
解决Python pip 自动更新升级失败的问题
Feb 21 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
Python Opencv实现单目标检测的示例代码
Sep 08 Python
python中sys模块的介绍与实例
Apr 17 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 #Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 #Python
Python 最强编辑器详细使用指南(PyCharm )
Sep 16 #Python
python 公共方法汇总解析
Sep 16 #Python
python lambda表达式(匿名函数)写法解析
Sep 16 #Python
python 内置函数汇总详解
Sep 16 #Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 #Python
You might like
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
php获取错误信息的方法
2015/07/17 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
php7性能提升的原因详解
2019/10/13 PHP
javascript插入样式实现代码
2012/02/22 Javascript
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
Webpack执行命令参数详解
2017/06/17 Javascript
jQuery使用bind函数实现绑定多个事件的方法
2017/10/11 jQuery
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
vue实现选项卡及选项卡切换效果
2018/04/24 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
vue下载二进制流图片操作
2020/10/26 Javascript
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
Django重设Admin密码过程解析
2020/02/10 Python
如何解决安装python3.6.1失败
2020/07/01 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
旅游网创业计划书
2014/01/31 职场文书
趣味体育活动方案
2014/02/08 职场文书
网络工程师职业规划
2014/02/10 职场文书
有创意的广告词
2014/03/18 职场文书
大型营销活动计划书
2014/04/28 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
预备党员转正材料
2014/12/19 职场文书