如何通过python实现全排列


Posted in Python onFebruary 11, 2020

这篇文章主要介绍了如何通过python实现全排列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

itertools模块现成的全排列:

for i in itertools.permutations('abcd',4):
  print ''.join(i)

相关全排列算法:

def perm(l): 
  if(len(l)<=1): 
    return [l] 
  r=[] 
  for i in range(len(l)): 
    s=l[:i]+l[i+1:] 
    p=perm(s) 
    for x in p: 
      r.append(l[i:i+1]+x) 
  return r
#递归,下降二叉树
def perm(lis,begin,end):
  #print "调用perm函数"
  if begin>=end:
    print lis
  else:
    i = begin 
    for num in range(begin,end):
      lis[num],lis[i] = lis[i],lis[num] #固定当前位置,在进行下一位的排列
      #print "-----num:%d,begin:%d"%(num,begin)
      perm(lis,begin+1,end)
      #print "*****num:%d,begin:%d"%(num,begin)
      #调用结束之后还需要回溯将交换位置的元素还原,以供其他下降路径使用(二叉树)
      lis[num],lis[i] = lis[i],lis[num]

lis = [1,2,3,4]
perm(lis,0,len(lis))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的Django框架中编写错误提示页面
Jul 22 Python
Python3 socket同步通信简单示例
Jun 07 Python
Python requests发送post请求的一些疑点
May 20 Python
深入理解Django自定义信号(signals)
Oct 15 Python
Python之lambda匿名函数及map和filter的用法
Mar 05 Python
pybind11在Windows下的使用教程
Jul 04 Python
Django Form and ModelForm的区别与使用
Dec 06 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
PyCharm 专业版安装图文教程
Feb 20 Python
如何基于python3和Vue实现AES数据加密
Mar 27 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
Mar 03 Python
利用Python实时获取steam特惠游戏数据
Jun 25 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
Feb 11 #Python
python 遗传算法求函数极值的实现代码
Feb 11 #Python
在django中使用apscheduler 执行计划任务的实现方法
Feb 11 #Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 #Python
Python中包的用法及安装
Feb 11 #Python
使用Python实现牛顿法求极值
Feb 10 #Python
关于TensorFlow新旧版本函数接口变化详解
Feb 10 #Python
You might like
PHP验证码函数代码(简单实用)
2013/09/29 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
javascript自执行函数
2017/02/10 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
移动端HTML5开发神器之vconsole详解
2020/12/15 HTML / CSS
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
final, finally, finalize的区别
2012/03/01 面试题
新学期红领巾广播稿
2014/01/14 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书
2015年医务科工作总结范文
2015/05/26 职场文书
2015入党个人自传范文
2015/06/26 职场文书