如何通过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中几种导入模块的方式总结
Apr 27 Python
Python与R语言的简要对比
Nov 14 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
Python实现二叉树的常见遍历操作总结【7种方法】
Mar 06 Python
简单的Python调度器Schedule详解
Aug 30 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
详解Python在使用JSON时需要注意的编码问题
Dec 06 Python
Python通过socketserver处理多个链接
Mar 18 Python
python json.dumps中文乱码问题解决
Apr 01 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
May 19 Python
初学者学习Python好还是Java好
May 26 Python
python pyhs2 的安装操作
Apr 07 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中UNIX时间戳和日期间的转换与计算实例
2014/11/19 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
Firefox getBoxObjectFor getBoundingClientRect联系
2008/10/26 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
Layer弹出层动态获取数据的方法
2018/08/20 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
深入分析在Python模块顶层运行的代码引起的一个Bug
2014/07/04 Python
Python实现获取网站PR及百度权重
2015/01/21 Python
浅述python2与python3的简单区别
2018/09/19 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
另类冲刺标语
2014/06/24 职场文书
2014年就业工作总结
2014/11/26 职场文书
外国人来华邀请函
2015/01/31 职场文书
办公室主任个人总结
2015/02/28 职场文书
2015年电教工作总结
2015/05/26 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书