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的几种标准输出重定向方式
Aug 15 Python
tensorflow 1.0用CNN进行图像分类
Apr 15 Python
快速解决PyCharm无法引用matplotlib的问题
May 24 Python
Python实现查找字符串数组最长公共前缀示例
Mar 27 Python
详解DeBug Python神级工具PySnooper
Jul 03 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
Oct 30 Python
Python values()与itervalues()的用法详解
Nov 27 Python
Python字典中的值为列表或字典的构造实例
Dec 16 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
Python StringIO如何在内存中读写str
Jan 07 Python
如何在Win10系统使用Python3连接Hive
Oct 15 Python
Python自然语言处理之切分算法详解
Apr 25 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
laravel model 两表联查示例
2019/10/24 PHP
Javascript 面向对象 命名空间
2010/05/13 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
2016/03/31 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
Vue常用的几个指令附完整案例
2018/11/06 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
python实现Zabbix-API监控
2018/09/17 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
django序列化serializers过程解析
2019/12/14 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
2020/04/20 Python
学习Python爬虫的几点建议
2020/08/05 Python
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
中专毕业生求职简历的自我评价
2013/10/21 职场文书
计算机软件个人的自荐信范文
2013/12/01 职场文书
投标担保书范文
2014/04/02 职场文书
保护环境倡议书300字
2014/05/19 职场文书
教师工作决心书
2015/02/04 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
领导干部学习心得体会
2016/01/23 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android
Python之matplotlib绘制折线图
2022/04/13 Python