浅谈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中用keys()方法返回字典键的教程
May 21 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
实例讲解Python的函数闭包使用中应注意的问题
Jun 20 Python
python正则表达式之对号入座篇
Jul 24 Python
Python pymongo模块常用操作分析
Sep 01 Python
Python Pandas批量读取csv文件到dataframe的方法
Oct 08 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
Mar 26 Python
Python Pandas对缺失值的处理方法
Sep 27 Python
TensorBoard 计算图的查看方式
Feb 15 Python
python程序的组织结构详解
Dec 06 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
php时间戳转换的示例
2014/03/31 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
原生js实现给指定元素的后面追加内容
2013/04/10 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
Python入门篇之对象类型
2014/10/17 Python
Python md5与sha1加密算法用法分析
2017/07/14 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
Python 3.7新功能之dataclass装饰器详解
2018/04/21 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
我就是这样学习Python中的列表
2019/06/02 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
Python如何批量生成和调用变量
2020/11/21 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
SNIDEL官网:日本VIVI杂志人气少女第一品牌
2020/03/12 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
党章培训心得体会
2014/09/04 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python