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 11 Python
Python 自动化表单提交实例代码
Jun 08 Python
Python探索之实现一个简单的HTTP服务器
Oct 28 Python
Python文本统计功能之西游记用字统计操作示例
May 07 Python
django DRF图片路径问题的解决方法
Sep 10 Python
python 不同方式读取文件速度不同的实例
Nov 09 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
Python实现的IP端口扫描工具类示例
Feb 15 Python
如何使用Python实现自动化水军评论
Jun 26 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
tensorflow 保存模型和取出中间权重例子
Jan 24 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 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
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
JS实现3D图片旋转展示效果代码
2015/09/22 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
微信小程序实现团购或秒杀批量倒计时
2020/11/01 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
bootstrap+spring boot实现面包屑导航功能(前端代码)
2019/10/09 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
Python算法应用实战之栈详解
2017/02/04 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
逼真的HTML5树叶飘落动画
2016/03/01 HTML / CSS
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
nohup的用法
2014/08/10 面试题
保送生自荐信范文
2013/10/06 职场文书
大学生简单自荐信
2013/11/10 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
php实现自动生成验证码的实例讲解
2021/11/17 PHP
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android