千锋教育-做有情怀、有良心、有品质的职业教育机构

python语言的全排列怎么提速?

来源:千锋教育
发布时间:2023-11-10 21:59:10
分享

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

什么是yield()方法?

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

deffoo():

print("starting...")

whileTrue:

res=yield4

print("res:",res)

g=foo()

print(next(g))

print("*"*20)

print(next(g))

代码的输出:

starting...

4

********************

res:None

使用yield()方法的全排列:

defperm(arr,pos=0):

ifpos==len(arr):

yieldarr

foriinrange(pos,len(arr)):

arr[pos],arr[i]=arr[i],arr[pos]

for_inperm(arr,pos+1):yield_

arr[pos],arr[i]=arr[i],arr[pos]

foriinperm([1,2,3,4]):

printi

以上内容为大家介绍了Python培训之语言的全排列怎么提速?,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • python偏函数如何理解 python偏函数如何理解1、偏函数,是对原始函数的二次封装,是将现有函数的部分参数预先绑定到指定值,从而获得新的函数。2、定义偏函数,需要使用partial关键字(位于functools模块中。语法
  • python字符串字面量是什么 1、Python使用单引号(')、双引号(')、三重单引号('''')和三重双引号(""")来表示字符串字面量。2、字符串字面量需要使用相同类型的引号。
  • python__new__()和__init__()有什么区别? 在python中,__new__()不是一定要有,只有继承自object的类才有,该方法可以return父类(通过super(当前类名,cls).__new__())出来的实例,或者直接是object
  • pythonimport是怎么实现的? 基本概念:模块(module):其实就是一个py文件,里面定义了各种变量,函数,类。模块除了内建模块(可以用过dir(__builtins__)查看有哪些内建函数),就是非内建模块,这一部分模块就需要
  • pythonpython是如何编译运行的 这里的解释执行是相对于编译执行而言的。我们都知道,使用C/C++之类的编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制的可执行文件。运行该程序的时候,就可
  • pythonPython可以用来做什么? Python技术可做web开发很多人只知道Java、PHP可做web开发,但对于Python也能做web开发却知之甚少。很多人可能不知道,Python其实是和互联网一起长大的。作为动态语言,并且具有更