浅谈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生成随机MAC地址
Mar 10 Python
Python正则表达式教程之一:基础篇
Mar 02 Python
通过python+selenium3实现浏览器刷简书文章阅读量
Dec 26 Python
Python操作mongodb的9个步骤
Jun 04 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
python 获取图片分辨率的方法
Jan 08 Python
基于python历史天气采集的分析
Feb 14 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
Python装饰器原理与基本用法分析
Jan 07 Python
python中re模块知识点总结
Jan 17 Python
python opencv实现图像配准与比较
Feb 09 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
人族 Terran 基本策略
2020/03/14 星际争霸
php读取3389的脚本
2014/05/06 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
JavaScript 特殊字符
2007/04/05 Javascript
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
Python标准库之sqlite3使用实例
2014/11/25 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
python获取多线程及子线程的返回值
2017/11/15 Python
Python IDLE入门简介
2017/12/08 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
对python中数组的del,remove,pop区别详解
2018/11/07 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
学生会干部自荐信
2014/02/04 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
华山导游词
2015/02/03 职场文书
教师个人发展总结
2015/02/11 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书