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中的startswith和endswith函数使用实例
Aug 25 Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 Python
Python 查看list中是否含有某元素的方法
Jun 27 Python
python Web开发你要理解的WSGI & uwsgi详解
Aug 01 Python
Python实现的建造者模式示例
Aug 06 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
Feb 21 Python
python 堆和优先队列的使用详解
Mar 05 Python
Python Flask 搭建微信小程序后台详解
May 06 Python
python 实现生成均匀分布的点
Dec 05 Python
python 如何获取页面所有a标签下href的值
May 06 Python
python 对图片进行简单的处理
Jun 23 Python
Python爬虫基础之初次使用scrapy爬虫实例
Jun 26 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
第七节 类的静态成员 [7]
2006/10/09 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
php无限极分类实现方法分析
2019/07/04 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
2020/04/26 PHP
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
JavaScript的数据类型转换原则(干货)
2018/03/15 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
Python增量循环删除MySQL表数据的方法
2016/09/23 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
python 读取二进制 显示图片案例
2020/04/24 Python
新手学python应该下哪个版本
2020/06/11 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
MYSQL基础面试题
2012/05/13 面试题
触摸春天教学反思
2014/02/03 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
个人函授自我鉴定
2014/03/25 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
学年个人总结范文
2015/03/05 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS