浅谈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的Requests包实现模拟登陆
Apr 27 Python
在pandas多重索引multiIndex中选定指定索引的行方法
Nov 16 Python
对python:print打印时加u的含义详解
Dec 15 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
python中时间模块的基本使用教程
May 14 Python
Python 获取ftp服务器文件时间的方法
Jul 02 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
python计算二维矩形IOU实例
Jan 18 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
Aug 17 Python
解决Tkinter中button按钮未按却主动执行command函数的问题
May 23 Python
如何用六步教会你使用python爬虫爬取数据
Apr 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
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
php集成开发环境详解
2019/09/24 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
微信小程序 开发之顶部导航栏实例代码
2017/02/23 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
vue-router路由模式详解(小结)
2019/08/26 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
python实现的jpg格式图片修复代码
2015/04/21 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
Python列表解析操作实例总结
2020/02/26 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
请解释virtual关键字的含义
2015/06/17 面试题
大学生个人求职信例文
2014/07/07 职场文书
机电一体化专业求职信
2014/07/22 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
重阳节慰问信
2015/02/15 职场文书
禁毒主题班会教案
2015/08/14 职场文书
同学会演讲稿
2019/04/02 职场文书
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL