浅谈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 相关文章推荐
python3.3实现乘法表示例
Feb 07 Python
Python实用日期时间处理方法汇总
May 09 Python
Python 模板引擎的注入问题分析
Jan 01 Python
Python实现的文本简单可逆加密算法示例
May 18 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
Oct 23 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
Win10环境中如何实现python2和python3并存
Jul 20 Python
python在linux环境下安装skimage的示例代码
Oct 14 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
Nov 02 Python
Python环境搭建过程从安装到Hello World
Feb 05 Python
python 实现IP子网计算
Feb 18 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脚本数据库功能详解(中)
2006/10/09 PHP
php 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
DOM相关内容速查手册
2007/02/07 Javascript
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
ExpressJS入门实例
2015/01/14 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
python处理html转义字符的方法详解
2016/07/01 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
python使用递归的方式建立二叉树
2019/07/03 Python
Python用字典构建多级菜单功能
2019/07/11 Python
Python3基本输入与输出操作实例分析
2020/02/14 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
销售人员自我评价
2014/02/01 职场文书
公司搬迁通知
2015/04/20 职场文书
小学生暑假生活总结
2015/07/13 职场文书
高中运动会前导词
2015/07/20 职场文书
教学副校长工作总结
2015/08/13 职场文书
docker 制作mysql镜像并自动安装
2022/05/20 Servers