iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python递归生成全排列序列实操
  • 326
分享到

Python递归生成全排列序列实操

2024-04-02 19:04:59 326人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言代码测试结果前言 在生成数据的过程中,我们有时候需要基于已有的数据生成排列组合的序列,对此,我们需要编写全排列算法生成序列,本文将分享本人编写的递归实现的全排列算法,支持对任

前言

  • 在生成数据的过程中,我们有时候需要基于已有的数据生成排列组合的序列,对此,我们需要编写全排列算法生成序列,本文将分享本人编写的递归实现的全排列算法,支持对任意类型的数据进行生成全排列序列(不局限于数字)
  • 全排列: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
  • 全排列数: f(n)=n!(定义0!=1)f(n)=n!(定义0!=1)
  • 递归实现方法:
    • 要求长度为n的序列的全排列序列:
    • ①依次选取原始序列一个元素作为全排列序列结果的第一个元素
    • ②递归调用全排列算法生成剩余n-1个元素的所有全排列序列
    • ③将①的元素分别与②的每一个序列组合,即可得到长度为n的序列所有全排列序列
    • ④递归结束条件:长度n=2的序列seq的有两个全排列序列为[seq[0],seq[1]]和 [seq[1],seq[0]]

代码

  • 输入:长度为n的序列,元素可以任何类型
  • 输出:输入序列的所有全排列序列
def full_sort(seq: list):
    '''
    author: 浅若清风cyf
    date: 2022/03/17
    全排列算法(递归)
    :param seq: 原始序列
    :return:
    '''
    results = []
    if len(seq) == 1:
        return seq
    elif len(seq) == 2:  # 递归返回终点
        return [[seq[0], seq[1]], [seq[1], seq[0]]]
    else:
        for i in seq:
            sub_seq = seq.copy()  # list类型为引用传递,此处需要使用copy()创建一个副本,避免修改原始list
            sub_seq.remove(i)
            tmp_result = full_sort(sub_seq)  # 获取子列表的全排列
            for t in tmp_result:
                results.append([i] + t)
        return results

测试结果

  • 测试样例1
if __name__ == '__main__':
    res = full_sort([1, 2, 3, 4])
    n = 0
    for i in res:
        print(i, end=' ')
        n += 1
        if n % 5 == 0:
            n = n % 5
            print('')

在这里插入图片描述

  • 测试样例2
    res = full_sort(['Apple', 'XiaoMi', 'HuaWei', 'OPPO'])
    n = 0
    for i in res:
        print(i, end=' ')
        n += 1
        if n % 5 == 0:
            n = n % 5
            print('')

在这里插入图片描述

到此这篇关于python递归生成全排列序列实操的文章就介绍到这了,更多相关Python生成全排列序列内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python递归生成全排列序列实操

本文链接: https://www.lsjlt.com/news/117319.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python递归生成全排列序列实操
    目录前言代码测试结果前言 在生成数据的过程中,我们有时候需要基于已有的数据生成排列组合的序列,对此,我们需要编写全排列算法生成序列,本文将分享本人编写的递归实现的全排列算法,支持对任...
    99+
    2024-04-02
  • java全排列用递归怎么实现
    要实现全排列的递归算法,可以按照以下步骤进行:1. 定义一个递归函数,传入当前需要排列的数组、起始索引和结束索引。2. 当起始索引等...
    99+
    2023-08-11
    java
  • c++全排列的递归算法怎么实现
    下面是C++中全排列的递归算法的实现:```cpp#include #include using namespace std;// ...
    99+
    2023-09-28
    c++
  • java全排列递归算法怎么应用
    全排列是一种经典的组合数学问题,递归算法可以很好地解决该问题。下面是一种Java递归算法实现全排列的例子:```javaimport...
    99+
    2023-09-23
    java
  • 利用Java如何实现全排列算法和递归
    利用Java如何实现全排列算法和递归?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。全排列:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从...
    99+
    2023-05-31
    全排列 递归 ava
  • c语言全排列递归算法怎么使用
    以下是使用C语言实现全排列的递归算法示例代码: #include <stdio.h> void swap(char *...
    99+
    2024-04-02
  • c语言全排列递归算法怎么应用
    C语言全排列递归算法可以应用于需要对给定的元素集合进行全排列的问题,例如求解一个字符串的所有排列。下面是一个简单的C语言全排列递归算...
    99+
    2023-09-08
    c语言
  • Python递归和生成器实现斐波那契数列有什么区别
    这篇文章主要讲解了“Python递归和生成器实现斐波那契数列有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python递归和生成器实现斐波那契数列有什么区别”吧!前言斐波那契数列,...
    99+
    2023-06-27
  • c语言全排列数怎么生成
    生成C语言全排列数的一种常见方法是使用递归。以下是一个示例代码: #include // 交换两个元素的值 void swap(...
    99+
    2023-10-21
    c语言
  • Java基于递归解决全排列问题算法示例
    本文实例讲述了Java基于递归解决全排列问题算法。分享给大家供大家参考,具体如下:排列问题设R={r1,r2,...,rn}是要进行排列的n个元素,Ri=R-{ri}。集合x中元素的全排列记为Perm(X)。(ri)Perm(X)表示在全排...
    99+
    2023-05-30
    java 递归 全排列
  • Python的range()函数:生成数字序列
    Python的range()函数:生成数字序列,需要具体代码示例Python是一种功能强大的编程语言,其中有许多内置的函数对于编写程序非常有帮助。其中之一就是range()函数,它用于生成一个数字序列。本文将详细介绍range()函数的用法...
    99+
    2023-11-18
    Python 序列 range()
  • IDEA一键生成方法的序列图神操作
    在平时的学习/工作中,我们会经常面临如下场景: 阅读别人的代码阅读框架源码阅读自己很久之前写的代码。 千万不要觉得工作就是单纯写代码,实际工作中,你会发现你的大部分时间实际都花在了阅...
    99+
    2024-04-02
  • python递归函数斐波那契数列怎么实现
    斐波那契数列是一个数列,其中每个数字是前两个数字的和,即F(n) = F(n-1) + F(n-2)。递归函数可以用来实现斐波那契数...
    99+
    2023-09-26
    python
  • Keras中如何实现序列生成任务
    在Keras中实现序列生成任务,通常涉及使用循环神经网络(RNN)或者长短期记忆网络(LSTM)。以下是一个简单的示例,演示如何使用...
    99+
    2024-04-02
  • Python中怎么实现列表生成式
    Python中怎么实现列表生成式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 方法一是循环:L = [] for x in&...
    99+
    2023-06-15
  • Python自动生成列表怎么实现
    Python可以使用for循环和列表推导式来自动生成列表。以下是两种常见的方法:1. 使用for循环生成列表:```pythonmy...
    99+
    2023-10-11
    Python
  • 怎么在python中实现按列排序DataFrame
    怎么在python中实现按列排序DataFrame?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性...
    99+
    2023-06-14
  • 刷题系列 - Python中怎么通过非递归实现二叉树前序遍历
    这期内容当中小编将会给大家带来有关刷题系列 - Python中怎么通过非递归实现二叉树前序遍历,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。二叉树前序遍历(Binary Tree Preorder Tra...
    99+
    2023-06-02
  • 怎么在python中实现列表生成式
    怎么在python中实现列表生成式?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络...
    99+
    2023-06-14
  • python中什么函数用于生成数字序列
    python中生成数字序列的方法:在python中可以使用range()函数生成数字序列,range()函数主要是用来创建一个整数列表,一般在for循环中使用。具体内容如下:range()语法range(start, stop[, step...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作