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 03 Python
Python中操作MySQL入门实例
Feb 08 Python
python实现线程池的方法
Jun 30 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
Nov 09 Python
Python生成密码库功能示例
May 23 Python
python实现关闭第三方窗口的方法
Jun 28 Python
cProfile Python性能分析工具使用详解
Jul 22 Python
Python:合并两个numpy矩阵的实现
Dec 02 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 Python
python实现逻辑回归的示例
Oct 09 Python
Python try except finally资源回收的实现
Jan 25 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
php使用Cookie控制访问授权的方法
2015/01/21 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
firebug的一个有趣现象介绍
2011/11/30 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
JavaScript中的"=、==、==="区别讲解
2019/01/22 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
详解package.json版本号规则
2019/08/01 Javascript
Vue项目打包编译优化方案
2020/09/16 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
高级文秘工作总结的自我评价
2013/09/28 职场文书
素质教育标语
2014/06/27 职场文书
承诺书样本
2014/08/30 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
竞聘报告优秀范文
2014/11/06 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
Javascript webpack动态import
2022/04/19 Javascript