怎么提速Python语言的全排列

今天就跟大家聊聊有关怎么提速Python语言的全排列,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

创新互联公司专注于察哈尔右翼前企业网站建设,响应式网站建设,商城开发。察哈尔右翼前网站建设公司,为察哈尔右翼前等地区提供建站服务。全流程按需求定制网站,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务

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

什么是yield()方法?

首先,如果你还没有对yield有个初步分认识,那么你先把yield看做“return”,这个是直观的,它首先是个return,普通的return是什么意思,就是在程序中返回某个值,返回之后程序就不再往下运行了。看做return之后再把它看做一个是生成器(generator)的一部分(带yield的函数才是真正的迭代器),好了,如果你对这些不明白的话,那先把yield看做return,然后直接看下面的程序,你就会明白yield的全部意思了:

def foo():
    print("starting...")
    while True:
        res = yield 4
        print("res:",res)
g = foo()
print(next(g))
print("*"*20)
print(next(g))

代码的输出:

starting...
4
********************
res: None

使用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语言的全排列
本文地址:http://bzwzjz.com/article/pihedj.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 成都网站建设公司 外贸网站设计方案 响应式网站设计 企业网站设计 成都网站建设 成都网站制作 成都网站建设 网站制作 重庆企业网站建设 成都网站建设 广安网站设计 高端网站设计推广 公司网站建设 成都网站设计公司 营销型网站建设 网站设计 专业网站设计 教育网站设计方案 手机网站制作 高端定制网站设计 企业网站建设公司