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获取文件ssdeep值的方法
Oct 05 Python
详解Python中的四种队列
May 21 Python
Python数据集切分实例
Dec 08 Python
Python3.7 新特性之dataclass装饰器
May 27 Python
python发送多人邮件没有展示收件人问题的解决方法
Jun 21 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
详解解决Python memory error的问题(四种解决方案)
Aug 08 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
python打包多类型文件的操作方法
Sep 21 Python
详解Python中string模块除去Str还剩下什么
Nov 30 Python
Python+kivy BoxLayout布局示例代码详解
Dec 28 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
第四节--构造函数和析构函数
2006/11/16 PHP
PHP分页显示制作详细讲解
2006/12/05 PHP
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
从零学Python之引用和类属性的初步理解
2014/05/15 Python
Python二叉搜索树与双向链表转换实现方法
2016/04/29 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
python如何实现一个刷网页小程序
2018/11/27 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
DELPHI中如何调用API,可举例说明
2014/01/16 面试题
加入学生会演讲稿
2014/04/24 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
党支部特色活动方案
2014/08/20 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
办理收楼委托书范本
2014/10/09 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
2015年母亲节寄语
2015/03/23 职场文书
2015年行政部工作总结
2015/04/28 职场文书
2015年工程师工作总结
2015/04/30 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL