Python循环实现n的全排列功能

 更新时间:2019年09月16日 13:45:41   作者:wuhen_n  
这篇文章主要介绍了Python循环实现n的全排列功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

描述:

输入一个大于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如何实现定时器功能

    在本篇文章里小编给大家分享的是关于Python中的简单定时器实例及代码,需要的朋友们可以学习下。
    2020-05-05
  • 获取python运行输出的数据并解析存为dataFrame实例

    获取python运行输出的数据并解析存为dataFrame实例

    这篇文章主要介绍了获取python运行输出的数据并解析存为dataFrame实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python中扩展包的安装方法详解

    Python中扩展包的安装方法详解

    这篇文章主要给大家总结了关于Python中扩展包的安装方法,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-06-06
  • python通过imaplib模块读取gmail里邮件的方法

    python通过imaplib模块读取gmail里邮件的方法

    这篇文章主要介绍了python通过imaplib模块读取gmail里邮件的方法,涉及Python操作imaplib模块操作邮件的相关技巧,需要的朋友可以参考下
    2015-05-05
  • python Pandas 读取txt表格的实例

    python Pandas 读取txt表格的实例

    下面小编就为大家分享一篇python Pandas 读取txt表格的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python协程异步IO中asyncio的使用

    python协程异步IO中asyncio的使用

    这篇文章主要介绍了python异步编程之asyncio的使用,python中异步IO操作是通过asyncio来实现的,为了更加详细说明asyncio,我们先从协程的最基础开始讲解
    2023-12-12
  • Python移动测试开发subprocess模块项目实战

    Python移动测试开发subprocess模块项目实战

    这篇文章主要为大家介绍了Python移动测试开发subprocess模块项目实战示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • python装饰器三种装饰模式的简单分析

    python装饰器三种装饰模式的简单分析

    这篇文章主要介绍了python装饰器的三种装饰模式,帮助大家更好的理解和学习python 装饰器,感兴趣的朋友可以了解下
    2020-09-09
  • python去除字符串中换行符的四种方法

    python去除字符串中换行符的四种方法

    python中换行符的作用就是将字符串划分为上下两行去输出显示,但是在有些情况下是不需要去用到换行符的,这个时候就要用方法将其给去除掉,这一篇文章小编会来给大家介绍一下python去除字符串中换行符的方法,感兴趣的话就一起往下看看吧
    2024-04-04
  • Python数据结构之单链表详解

    Python数据结构之单链表详解

    这篇文章主要为大家详细介绍了Python数据结构之单链表的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09

最新评论