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 实现 贪吃蛇大作战 代码分享
Sep 07 Python
python读取csv文件并把文件放入一个list中的实例讲解
Apr 27 Python
python求最大连续子数组的和
Jul 07 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
python用plt画图时,cmp设置方法
Dec 13 Python
pyqt5中QThread在使用时出现重复emit的实例
Jun 21 Python
python turtle库画一个方格和圆实例
Jun 27 Python
对YOLOv3模型调用时候的python接口详解
Aug 26 Python
Django重设Admin密码过程解析
Feb 10 Python
keras实现多种分类网络的方式
Jun 11 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
Jun 17 Python
python如何随机生成高强度密码
Aug 19 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
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
2006/12/06 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
用JS写的一个TableView控件代码
2010/01/23 Javascript
JavaScript prototype属性深入介绍
2012/11/27 Javascript
js左侧三级菜单导航实例代码
2013/09/13 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
2018/07/05 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
Python实现把回车符\r\n转换成\n
2015/04/23 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
工程招投标邀请书
2014/01/26 职场文书
高中军训感想300字
2014/03/04 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
个人求职信范文
2014/05/24 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
2016年国庆节新闻稿范文
2015/11/25 职场文书