python通过yield实现数组全排列的方法

yipeiwu_com5年前Python基础

本文实例讲述了python通过yield实现数组全排列的方法。分享给大家供大家参考。具体分析如下:

从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
这段代码用到了yield方法,全排列速度加倍

def perm(arr, pos = 0):
  if pos == len(arr):
    yield arr
  for i in range(pos, len(arr)):
    arr[pos], arr[i] = arr[i], arr[pos]
    for _ in perm(arr, pos + 1): yield _
    arr[pos], arr[i] = arr[i], arr[pos]
for i in perm([1,2,3,4]):
  print i

希望本文所述对大家的Python程序设计有所帮助。

相关文章

使用pip安装python库的多种方式

操作系统 : CentOS7.5.1804_x64 Python 版本 : 3.6.8 1、使用pip在线安装 1.1 安装单个package 格式如下: pip install Som...

同时安装Python2 & Python3 cmd下版本自由选择的方法

同时安装Python2 & Python3 cmd下版本自由选择的方法

系统:win7 python2.7,python3.6同时安装,于是问题来了,python27与python36文件夹下的文件名都是python.exe 这样在cmd下,直接输入pyt...

在Python的web框架中编写创建日志的程序的教程

在Python的web框架中编写创建日志的程序的教程

在Web开发中,后端代码写起来其实是相当容易的。 例如,我们编写一个REST API,用于创建一个Blog: @api @post('/api/blogs') def api_cre...

django 做 migrate 时 表已存在的处理方法

在开发web的时候,如果是以前已存在的项目,项目下载下来后,为了使用测试库的数据,会直接将整个测试库(如sqlite3)拿到本机来。这种情况下,如果执行的顺序不对,很容易在执行migra...

django缓存配置的几种方法详解

为什么要用缓存? 首先说,为什么要用缓存的,由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个...