浅谈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 相关文章推荐
haskell实现多线程服务器实例代码
Nov 26 Python
Python库urllib与urllib2主要区别分析
Jul 13 Python
web.py 十分钟创建简易博客实现代码
Apr 22 Python
Python 正则表达式入门(中级篇)
Dec 07 Python
Python HTTP客户端自定义Cookie实现实例
Apr 28 Python
使用pandas批量处理矢量化字符串的实例讲解
Jul 10 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
Aug 16 Python
浅谈解除装饰器作用(python3新增)
Oct 15 Python
Python requests模块实例用法
Feb 11 Python
python使用if语句实现一个猜拳游戏详解
Aug 27 Python
python和JavaScript哪个容易上手
Jun 23 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 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 身份证号验证函数
2009/05/07 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
详解小程序rich-text对富文本支持方案
2018/11/28 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
介绍Python中内置的itertools模块
2015/04/29 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
车间操作工岗位职责
2013/12/19 职场文书
消防器材管理制度
2014/01/28 职场文书
会计工作总结范文2014
2014/12/23 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
接收函格式
2015/01/30 职场文书
个人专业技术总结
2015/03/05 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL