浅谈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 urllib模块urlopen()与urlretrieve()详解
Nov 01 Python
Python yield使用方法示例
Dec 04 Python
python中getaddrinfo()基本用法实例分析
Jun 28 Python
python2.7无法使用pip的解决方法(安装easy_install)
Apr 03 Python
神经网络(BP)算法Python实现及应用
Apr 16 Python
在Python 不同级目录之间模块的调用方法
Jan 19 Python
Django Rest framework解析器和渲染器详解
Jul 25 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
python实现多进程按序号批量修改文件名的方法示例
Dec 30 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
Python答题卡识别并给出分数的实现代码
Jun 22 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&MYSQL分页原理及实现
2007/01/02 PHP
jquery简单体验
2007/01/10 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
jQuery中:disabled选择器用法实例
2015/01/04 Javascript
浅谈angularJS 作用域
2015/07/05 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
详解ES6之用let声明变量以及let loop机制
2017/07/15 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
微信公众号开发之微信支付代码记录的实现
2019/10/16 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
python统计一个文本中重复行数的方法
2014/11/19 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
python flask实现分页的示例代码
2018/08/02 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
python字符串查找函数的用法详解
2019/07/08 Python
django用户登录验证的完整示例代码
2019/07/21 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
Python编译为二进制so可执行文件实例
2019/12/23 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
阻止移动设备(手机、pad)浏览器双击放大网页的方法
2014/06/03 HTML / CSS
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
高校教师岗位职责
2014/03/18 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
满月酒邀请函
2015/01/30 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
一文搞懂Java中的注解和反射
2022/06/21 Java/Android