浅谈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多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
Python中endswith()函数的基本使用
Apr 07 Python
Python中的rjust()方法使用详解
May 19 Python
python中zip和unzip数据的方法
May 27 Python
Python生成任意范围任意精度的随机数方法
Apr 09 Python
Python实现的求解最大公约数算法示例
May 03 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
Python实现AI换脸功能
Apr 10 Python
python3.5的包存放的具体路径
Aug 16 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
Jan 27 Python
使用Django实现商城验证码模块的方法
Jun 01 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&java(一)
2006/10/09 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
js 实现菜单上下显示附效果图
2013/11/21 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
浅谈javascript中的加减时间
2016/07/12 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
angular.js指令中的controller、compile与link函数的不同之处
2017/05/10 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
pygame加载中文名mp3文件出现error
2017/03/31 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
python 把列表转化为字符串的方法
2018/10/23 Python
python下载微信公众号相关文章
2019/02/26 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
python将音频进行变速的操作方法
2020/04/08 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
Python实现京东抢秒杀功能
2021/01/25 Python
python实现计算图形面积
2021/02/22 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
eharmony澳大利亚:网上约会服务
2020/02/29 全球购物
医学类导师推荐信范文
2013/11/19 职场文书
校园文化建设方案
2014/02/03 职场文书
荆州古城导游词
2015/02/06 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书