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随机生成数模块random使用实例
Apr 13 Python
对python使用telnet实现弱密码登录的方法详解
Jan 26 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
python 判断linux进程,并杀死进程的实现方法
Jul 01 Python
python实现对图片进行旋转,放缩,裁剪的功能
Aug 07 Python
PyCharm使用之配置SSH Interpreter的方法步骤
Dec 26 Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
解决Python数据可视化中文部分显示方块问题
May 16 Python
Python devel安装失败问题解决方案
Jun 09 Python
python初步实现word2vec操作
Jun 09 Python
详解Python Celery和RabbitMQ实战教程
Jan 20 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安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
学习JavaScript的最佳方法分享
2011/10/21 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
js控制table合并具体实现
2014/02/20 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
js回调函数仿360开机
2019/12/26 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
vue data有值,但是页面{{}} 取不到值的解决
2020/11/09 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
python中模块的__all__属性详解
2017/10/26 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
python判断自身是否正在运行的方法
2019/08/08 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
购买一个高级域名:BuyDomains
2018/03/11 全球购物
办公室岗位职责
2014/02/12 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
预备党员入党感想
2015/08/10 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书