浅谈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中的Numpy入门教程
Apr 26 Python
Python实现抓取页面上链接的简单爬虫分享
Jan 21 Python
Python中的super用法详解
May 28 Python
Python中return语句用法实例分析
Aug 04 Python
Python使用email模块对邮件进行编码和解码的实例教程
Jul 01 Python
Scrapy-redis爬虫分布式爬取的分析和实现
Feb 07 Python
浅谈五大Python Web框架
Mar 20 Python
python pandas dataframe 行列选择,切片操作方法
Apr 10 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
FFT快速傅里叶变换的python实现过程解析
Oct 21 Python
Python3使用Selenium获取session和token方法详解
Feb 16 Python
Django框架模板用法详解
Jun 10 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调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
jquery中的 $("#jb51")与document.getElementById("jb51") 的区别
2011/07/26 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
js常用DOM方法详解
2017/02/04 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
利用js canvas实现五子棋游戏
2020/10/11 Javascript
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
在python中pandas的series合并方法
2018/11/12 Python
实例详解Python装饰器与闭包
2019/07/29 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
本科生学习总结的自我评价
2013/10/02 职场文书
毕业自荐信
2013/12/16 职场文书
考试不及格检讨书
2014/01/09 职场文书
《最可爱的人》教学反思
2014/02/14 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
护理实习生带教计划
2015/01/16 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers