浅谈python输出列表元素的所有排列形式


Posted in Python onFebruary 26, 2020

例如:

[‘a', ‘b', ‘c'] 输出 [‘a', ‘b', ‘c'] [‘a', ‘c', ‘b'] [‘b', ‘a', ‘c'] [‘b', ‘c', ‘a'] [‘c', ‘a', ‘b'] [‘c', ‘b', ‘a']

方法一:利用递归的方式实现

def permutation(li):
  len_list = len(li)
  if len_list == 1:
    return li

  result = []
  for i in range(len_list):
    res_list = li[:i] + li[i+1:]
    s = li[i]
    per_result = permutation(res_list)
    if len(per_result) == 1:
      result.append(li[i:i + 1] + per_result)
    else:
      result += [[s] + j for j in per_result]
  return result

方法二:利用python自带的模块

import itertools

def permutation(li):
  print(list(itertools.permutations(li)))

补充拓展:python实现四个数字的全排列

首先我们使用常规做法,循环交换完成。

lst = [1, 3, 5, 8]

for i in range(0, len(lst)):
  lst[i], lst[0] = lst[0], lst[i]
  for j in range(1, len(lst)):
    lst[j], lst[1] = lst[1], lst[j]
    for h in range(2, len(lst)):
      print(lst)
    lst[j], lst[1] = lst[1], lst[j]
  lst[i], lst[0] = lst[0], lst[i]

如果列表较长,元素较多,以上常规方法实现起来就比较吃力了,以下我们采用递归方式实现。

def permutations(position):
  if position == len(lst) - 1:
    print(lst)
  else:
    for index in range(position, len(lst)):
      lst[index], lst[position] = lst[position], lst[index]
      permutations(position+1)
      lst[index], lst[position] = lst[position], lst[index]
permutations(0)

以上这篇浅谈python输出列表元素的所有排列形式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中利用原始套接字进行网络编程的示例
May 04 Python
Python的爬虫程序编写框架Scrapy入门学习教程
Jul 02 Python
python执行使用shell命令方法分享
Nov 08 Python
Python模拟登录的多种方法(四种)
Jun 01 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
启动Atom并运行python文件的步骤
Nov 09 Python
Django框架基础模板标签与filter使用方法详解
Jul 23 Python
python实现递归查找某个路径下所有文件中的中文字符
Aug 31 Python
python定时任务 sched模块用法实例
Nov 04 Python
Python+numpy实现矩阵的行列扩展方式
Nov 29 Python
使用tensorflow实现矩阵分解方式
Feb 07 Python
Python高并发和多线程有什么关系
Nov 14 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
Feb 26 #Python
python——全排列数的生成方式
Feb 26 #Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 #Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 #Python
python自动点赞功能的实现思路
Feb 26 #Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
Feb 26 #Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 #Python
You might like
基于mysql的论坛(5)
2006/10/09 PHP
PHP实时显示输出
2008/10/02 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
dwr spring的集成实现代码
2009/03/22 Javascript
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
Angular的$http与$location
2016/12/26 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
详解vue表单——小白速看
2018/04/08 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
Python数据结构之图的应用示例
2018/05/11 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
python将视频转换为全字符视频
2019/04/26 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
Python 转换文本编码实现解析
2019/08/27 Python
Python列表解析操作实例总结
2020/02/26 Python
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
详解使用双缓存解决Canvas clearRect引起的闪屏问题
2019/04/29 HTML / CSS
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
毕业生个人求职的自我评价
2013/10/28 职场文书
家长评语和期望
2014/02/10 职场文书
八一建军节感言
2014/02/28 职场文书
工商管理本科生求职信
2014/07/13 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书