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

yipeiwu_com7年前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程序设计有所帮助。

相关文章

Python 如何提高元组的可读性

这篇文章主要介绍了Python 如何提高元组的可读性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 假设学生系统中数据为固定格式:(名...

用virtualenv建立多个Python独立虚拟开发环境

用virtualenv建立多个Python独立虚拟开发环境

本文为大家分享了virtualenv建立多个Python独立虚拟开发环境,供大家参考,具体内容如下 1、安装virtualenv: pip install virtualenv 2...

使用OpCode绕过Python沙箱的方法详解

0x01 OpCode opcode又称为操作码,是将python源代码进行编译之后的结果,python虚拟机无法直接执行human-readable的源代码,因此python编译器第...

flask session组件的使用示例

一、简介 flask中session组件可分为内置的session组件还有第三方flask-session组件,内置的session组件功能单一,而第三方的flask-sessoin可...

Python入门_浅谈for循环、while循环

Python入门_浅谈for循环、while循环

Python中有两种循环,分别为:for循环和while循环。 1. for循环 for循环可以用来遍历某一对象(遍历:通俗点说,就是把这个循环中的第一个元素到最后一个元素依次访问一次)...