python使用递归解决全排列数字示例

时间:2022-02-22 04:14:49 

第一种方法:递归


def perms(elements):
    if len(elements) <=1:
        yield elements
    else:
        for perm in perms(elements[1:]):
            for i in range(len(elements)):
                yield perm[:i] + elements[0:1] + perm[i:]

for item in list(perms([1, 2, 3,4])):
    print item

结果


[1, 2, 3, 4]
[2, 1, 3, 4]
[2, 3, 1, 4]
[2, 3, 4, 1]
[1, 3, 2, 4]
[3, 1, 2, 4]
[3, 2, 1, 4]
[3, 2, 4, 1]
[1, 3, 4, 2]
[3, 1, 4, 2]
[3, 4, 1, 2]
[3, 4, 2, 1]
[1, 2, 4, 3]
[2, 1, 4, 3]
[2, 4, 1, 3]
[2, 4, 3, 1]
[1, 4, 2, 3]
[4, 1, 2, 3]
[4, 2, 1, 3]
[4, 2, 3, 1]
[1, 4, 3, 2]
[4, 1, 3, 2]
[4, 3, 1, 2]
[4, 3, 2, 1]

第二种方法:python标准库


import itertools
print list(itertools.permutations([1, 2, 3,4],3))

源代码如下:


#coding:utf-8
import itertools
print list(itertools.permutations([1, 2, 3,4],3))

def perms(elements):
    if len(elements) <=1:
        yield elements
    else:
        for perm in perms(elements[1:]):
            for i in range(len(elements)):
                yield perm[:i] + elements[0:1] + perm[i:]

for item in list(perms([1, 2, 3,4])):
    print item

标签:python,递归,全排列
0
投稿

猜你喜欢

  • RS.GETROWS使用详解

    2008-01-16 13:21:00
  • 利用sort()和Math.random()实现元素的随机排列

    2010-10-19 12:42:00
  • 详解常用查找数据结构及算法(Python实现)

    2023-02-27 02:03:21
  • Python中new方法的详解

    2022-12-06 14:20:18
  • Go中strings的常用方法详解

    2023-06-27 01:58:32
  • python3.6.3安装图文教程 TensorFlow安装配置方法

    2021-06-25 19:20:42
  • Python中字符编码简介、方法及使用建议

    2021-10-11 21:58:33
  • python并发编程多进程 模拟抢票实现过程

    2022-03-07 11:53:05
  • PHP实现多文件上传的方法

    2023-11-23 03:42:04
  • Pytorch之finetune使用详解

    2021-08-31 20:41:44
  • asp dictionary对象使用介绍

    2008-05-30 13:51:00
  • 主流浏览器性能比较

    2009-10-19 14:34:00
  • 网页代码更清晰高效的一些经验

    2008-05-19 12:23:00
  • 将TensorFlow的模型网络导出为单个文件的方法

    2022-11-11 07:30:13
  • 程序员的七种武器

    2008-11-01 17:13:00
  • Pyhhon之Pygame的Font文本和字体

    2021-08-14 13:00:33
  • 三条asp语句搞定路径

    2007-10-22 13:30:00
  • Python自然语言处理之切分算法详解

    2023-02-02 04:46:34
  • python中使用iterrows()对dataframe进行遍历的实例

    2023-12-29 13:43:02
  • ORACLE 数据库RMAN备份恢复

    2009-04-24 12:23:00
  • asp之家 网络编程 m.aspxhome.com