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 06 Python
Python彩色化Linux的命令行终端界面的代码实例分享
Jul 02 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
Python比较配置文件的方法实例详解
Jun 06 Python
django和vue实现数据交互的方法
Aug 21 Python
Python高级特性 切片 迭代解析
Aug 23 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
mac在matplotlib中显示中文的操作方法
Mar 06 Python
Django Form设置文本框为readonly操作
Jul 03 Python
pycharm 的Structure界面设置操作
Feb 05 Python
python3+PyQt5+Qt Designer实现界面可视化
Jun 10 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
flash用php连接数据库的代码
2011/04/21 PHP
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
PHP 布尔值的自增与自减的实现方法
2018/05/03 PHP
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
js如何实现淡入淡出效果
2020/11/18 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
使用python编写监听端
2018/04/12 Python
Django 路由系统URLconf的使用
2018/10/11 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
AOP的定义以及作用
2013/09/08 面试题
中职生自我鉴定范文
2013/10/03 职场文书
机修工岗位职责
2013/11/24 职场文书
幼儿园老师辞职信
2014/01/20 职场文书
大学生简历求职信
2014/06/24 职场文书
美术学专业求职信
2014/07/23 职场文书
办理房产过户的委托书
2014/09/14 职场文书
高考升学宴答谢词
2015/01/20 职场文书
检讨书格式
2015/05/07 职场文书
个人业务学习心得体会
2016/01/25 职场文书
MySQL 十大常用字符串函数详解
2021/06/30 MySQL