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中几个常用的类方法
Apr 08 Python
Python使用metaclass实现Singleton模式的方法
May 05 Python
python函数形参用法实例分析
Aug 04 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
Aug 12 Python
Django之form组件自动校验数据实现
Jan 14 Python
基于Python生成个性二维码过程详解
Mar 05 Python
Python如何把Spark数据写入ElasticSearch
Apr 18 Python
Django model class Meta原理解析
Nov 14 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 Python
Python中的socket网络模块介绍
Jul 23 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 过滤危险html代码
2009/06/29 PHP
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
PHP自动生成后台导航网址的最佳方法
2013/08/27 PHP
在PHP中使用redis
2013/11/04 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
PHP链表操作简单示例
2016/10/15 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
2018/10/09 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
原生js实现trigger方法示例代码
2019/05/22 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
python处理PHP数组文本文件实例
2014/09/18 Python
使用tensorflow实现线性svm
2018/09/07 Python
keras中的History对象用法
2020/06/19 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
.net面试题
2015/12/22 面试题
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
总经理岗位职责描述
2014/02/08 职场文书
作文评语大全
2014/04/23 职场文书
《桃林那间小木屋》教学反思
2014/05/01 职场文书
室内设计专业毕业生求职信
2014/05/02 职场文书
云台山导游词
2015/02/03 职场文书
公司年夜饭通知
2015/04/25 职场文书
创业计划书之情侣餐厅
2019/09/29 职场文书