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 MySQLdb模块连接操作mysql数据库实例
Apr 08 Python
详解python3百度指数抓取实例
Dec 12 Python
python利用sklearn包编写决策树源代码
Dec 21 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
Python中存取文件的4种不同操作
Jul 02 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
Jul 26 Python
Python实现时间序列可视化的方法
Aug 06 Python
python中的线程threading.Thread()使用详解
Dec 17 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
Feb 05 Python
Python中常用的高阶函数实例详解
Feb 21 Python
Python使用UDP实现720p视频传输的操作
Apr 24 Python
Pytorch中expand()的使用(扩展某个维度)
Jul 15 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 Smarty模板生成html文档的方法
2010/04/12 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
2014/10/20 PHP
浅谈php冒泡排序
2014/12/30 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
javascript 处理null及null值示例
2014/06/09 Javascript
jQuery基础知识小结
2014/12/22 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
IE和Firefox之间在JavaScript语法上的差异
2016/04/22 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
详解webpack 多入口配置
2017/06/16 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
从零学Python之hello world
2014/05/21 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
python实现分页效果
2017/10/25 Python
深入理解Python中的*重复运算符
2017/10/28 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
2021/02/22 Python
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
网络编辑职责
2014/03/01 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
捐款倡议书
2014/04/14 职场文书
看上去很美观后感
2015/06/10 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js