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装饰器 免去调用父类构造函数的麻烦
May 18 Python
Python中py文件引用另一个py文件变量的方法
Apr 29 Python
详解用TensorFlow实现逻辑回归算法
May 02 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 Python
pytz格式化北京时间多出6分钟问题的解决方法
Jun 21 Python
Python zip函数打包元素实例解析
Dec 11 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
Dec 27 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
Jun 11 Python
Django实现内容缓存实例方法
Jun 30 Python
学生如何注册Pycharm专业版以及pycharm的安装
Sep 24 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 Python
Python实现中英文全文搜索的示例
Dec 04 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查看当前变量类型的方法
2015/07/31 PHP
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
如何在PHP中生成随机数
2020/06/04 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
python调用新浪微博API项目实践
2014/07/28 Python
Python os模块介绍
2014/11/30 Python
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
Python使用Supervisor来管理进程的方法
2015/05/28 Python
python如何通过protobuf实现rpc
2016/03/06 Python
Python pymongo模块用法示例
2018/03/31 Python
Python用字典构建多级菜单功能
2019/07/11 Python
django的csrf实现过程详解
2019/07/26 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
OpenCV图片漫画效果的实现示例
2020/08/18 Python
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
社区志愿者心得体会
2014/01/03 职场文书
求职信名称怎么写
2014/05/26 职场文书
励志演讲稿800字
2014/08/21 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL