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

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

相关文章

解决pycharm py文件运行后停止按钮变成了灰色的问题

解决pycharm py文件运行后停止按钮变成了灰色的问题

这两天被这个问题折磨得要死,把pycharm卸载了还是没解决,后来终于在一篇博客中看见,然后终于解决了 问题界面如下: 1. 每次运行后都会跳出一个 python console,并且...

Python中一个for循环循环多个变量的示例

首先,熟悉一个函数zip,如下是使用help(zip)对zip的解释。 Help on built-in function zip in module __builtin__: zip...

Django配置文件代码说明

Django配置文件代码说明

Django配置文件settings简单说明,包含时区语言等 打开创建好的django工程,查看settings.py文件 BASE_DIR = os.path.dirname(os...

Python算法之求n个节点不同二叉树个数

问题 创建一个二叉树 二叉树有限多个节点的集合,这个集合可能是: 空集 由一个根节点,和两棵互不相交的,分别称作左子树和右子树的二叉树组成 创建二叉树: 创建节点 再创建节...

基于python的selenium两种文件上传操作实现详解

基于python的selenium两种文件上传操作实现详解

方法一、input标签上传 如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法。 方法二、非input标签上传 这种...