浅谈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进行基础的函数式编程的教程
Mar 31 Python
python中函数传参详解
Jul 03 Python
python 类详解及简单实例
Mar 24 Python
Python中单、双下划线的区别总结
Dec 01 Python
Django中针对基于类的视图添加csrf_exempt实例代码
Feb 11 Python
详解python pandas 分组统计的方法
Jul 30 Python
Python小程序之在图片上加入数字的代码
Nov 26 Python
PyTorch中的Variable变量详解
Jan 07 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
Feb 25 Python
aws 通过boto3 python脚本打pach的实现方法
May 10 Python
Python自定义sorted排序实现方法详解
Sep 18 Python
Python新建项目自动添加介绍和utf-8编码的方法
Dec 26 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数组函数
2008/08/18 PHP
PHP集成FCK的函数代码
2008/09/27 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
简单介绍Python中的round()方法
2015/05/15 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
商务英语求职自荐信范文
2013/12/24 职场文书
工艺员岗位职责
2014/02/11 职场文书
房屋租赁意向书
2014/04/01 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
宿舍标语大全
2014/06/19 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
企业员工辞职信范文
2015/05/12 职场文书
Netflix《海贼王》真人版剧集多张片场照曝光
2022/04/04 日漫