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 02 Python
django之常用命令详解
Jun 30 Python
Python subprocess模块详细解读
Jan 29 Python
python向已存在的excel中新增表,不覆盖原数据的实例
May 02 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
python中的反斜杠问题深入讲解
Aug 12 Python
Python 矩阵转置的几种方法小结
Dec 02 Python
python打印异常信息的两种实现方式
Dec 24 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
python实现文字版扫雷
Apr 24 Python
Python使用matplotlib绘制圆形代码实例
May 27 Python
Python实现区域填充的示例代码
Feb 03 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中的串行化变量和序列化对象
2006/09/05 PHP
轻松修复Discuz!数据库
2008/05/03 PHP
php实现删除指定目录下相关文件的方法
2014/10/20 PHP
php创建无限级树型菜单
2015/11/05 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
jQuery EasyUI Dialog拖不下来如何解决
2015/09/28 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
layui的select联动实现代码
2019/09/28 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
在Python 中实现图片加框和加字的方法
2019/01/26 Python
python使用配置文件过程详解
2019/12/28 Python
python中有帮助函数吗
2020/06/19 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
武汉英思工程科技有限公司–ORACLE面试测试题目
2012/04/30 面试题
操行评语大全
2014/04/30 职场文书
python 如何在list中找Topk的数值和索引
2021/05/20 Python
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技