浅谈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聊天程序实例代码分享
Nov 18 Python
在Python中使用元类的教程
Apr 28 Python
详解python基础之while循环及if判断
Aug 24 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
Feb 08 Python
python使用xlrd和xlwt读写Excel文件的实例代码
Sep 05 Python
Django 路由系统URLconf的使用
Oct 11 Python
使用CodeMirror实现Python3在线编辑器的示例代码
Jan 14 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
Sep 20 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
tensorflow自定义激活函数实例
Feb 04 Python
python实现mean-shift聚类算法
Jun 10 Python
Python列表元素删除和remove()方法详解
Jan 04 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
一个比较简单的PHP 分页分组类
2009/12/10 PHP
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
window.addEventListener来解决让一个js事件执行多个函数
2012/12/26 Javascript
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
原生JS轮播图插件
2017/02/09 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
Python实现代码统计工具(终极篇)
2016/07/04 Python
python使用pymysql实现操作mysql
2016/09/13 Python
python实现一个简单的并查集的示例代码
2018/03/19 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
售后专员岗位职责
2013/12/08 职场文书
2014年社区庆元旦活动方案
2014/03/08 职场文书
新学期决心书
2014/03/11 职场文书
护士节策划方案
2014/05/19 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
个人业务学习心得体会
2016/01/25 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书
尝试使用Python爬取城市租房信息
2022/04/12 Python
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android