今天小编就为大家分享一篇浅谈python输出列表元素的所有排列形式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

例如:

[‘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输出列表元素的所有排列形式相关推荐

  1. python 表格格式输出_简单介绍python输出列表元素的所有排列形式

    今天小编就为大家分享一篇浅谈python输出列表元素的所有排列形式,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 例如: ['a', 'b', 'c'] 输出 ['a', 'b', ...

  2. python中len用法_简单介绍Python中的len()函数的使用

    简单介绍Python中的len()函数的使用 函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数:str:要计算的字符串.列表.字典.元组等 4:返回 ...

  3. python写整数逆位运算_简单了解python的一些位运算技巧

    前言 位运算的性能大家想必是清楚的,效率绝对高.相信爱好源码的同学,在学习阅读源码的过程中会发现不少源码使用了位运算.但是为啥在实际编程过程中应用少呢?想必最大的原因,是较为难懂.不过,在面试的过程中 ...

  4. python协程异步原理_简单介绍Python的Tornado框架中的协程异步实现原理

    Tornado 4.0 已经发布了很长一段时间了, 新版本广泛的应用了协程(Future)特性. 我们目前已经将 Tornado 升级到最新版本, 而且也大量的使用协程特性. 很长时间没有更新博客, ...

  5. python中函数的可变参数_简单谈谈Python中函数的可变参数

    前言 在Python中定义函数,可以用必选参数.默认参数.可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数.默认参数.可变参数和关键字参数. ...

  6. python简单装饰器_简单介绍Python装饰器(一)

    装饰器的作用 相信大家在 探索过程中已经了解装饰器的作用,也有很多花里胡哨的介绍. 这次小冰也来讲解一下关于Python装饰器的一些小知识. 它的作用: 性能测试 日志 安全验证 ...... 相信大 ...

  7. python内存的回收机制_简单介绍python的垃圾回收机制

    这篇文章主要介绍了python垃圾回收机制的相关资料,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 什么是垃圾回收机制? 首先,咱先来解释名词,垃圾回收是不是就是将没用的,废弃的东西回 ...

  8. python装饰器的通俗理解_简单理解Python装饰器

    Python有大量强大又贴心的特性,如果要列个最受欢迎排行榜,那么装饰器绝对会在其中. 刚接触装饰器,会觉得代码不多却难以理解.其实装饰器的语法本身挺简单的,复杂是因为同时混杂了其它的概念.下面我们一 ...

  9. python爬虫办公实例100例_简单的python爬虫实例

    爬取搜索出来的所有"中东人"的图片: 先看一下源代码,找到存放图片链接的地方,在源代码最下面的部分: 先说一下思路: 构造url列表=>依次爬取每个页面=>先在网页源代 ...

最新文章

  1. 微软白皮书:47页报告详解中国芯片设计云技术
  2. 《剑指offer》c++版本 13. 机器人的运动范围
  3. ubuntu下文件名乱码的解决办法
  4. 怎么把 CDialogBar像工具条一样使用,有图有真相
  5. IOS数据存储 —— 1 沙盒(数据存储目录)
  6. getReadableDatabase VS getWritableDatabase
  7. 大数据分块_空间数据库基础理论 GIS空间数据处理分析涉及的基本概念
  8. 专题训练——[kuangbin带你飞]最短路练习
  9. 面试题:谈谈你对Mysql数据库优化的见解
  10. python中line是什么意思_python 中循环 line for line in file(filename)什么意思?
  11. 地址解析协议(ARP)
  12. 千帆竞发-Redis分布式锁
  13. php cookie 注入,LiveZilla 'setCookieValue()'函数PHP对象注入漏洞
  14. 知识点总结之学习方式
  15. linux 时间戳计数器,用时间戳计数器测量频率的方法(下)-测试测量-与非网
  16. Java8新特性(二)流式处理
  17. zillow房价预测比赛_如何看待 Kaggle 发布的 Zillow 房价预测比赛?
  18. win10自动安装软件
  19. Tez的web UI简单体验
  20. Github常用英文翻译

热门文章

  1. Spring Boot 学习之,AOP统一处理请求日志
  2. oracle简易数据库搭建,Oracle 10g 手工创建一个最简单的数据库
  3. ShadeGraph教程之节点详解4:Master Nodes
  4. php弹出是否,Javascript警报弹出窗口是否会扩展PHP会话?
  5. OpenShift 4 - DevSecOps Workshop (6) - 为Pipeline增加SonarQube实现SAST
  6. Ubuntu 20.10 Beta 版本发布
  7. LookAheadEnumerator:在解析器中实现回溯
  8. 斯坦福大学发布 2019 人工智能指数报告
  9. Visual Studio 2019 16.3 Preview 3 发布,使用 IntelliCode 重构更容易
  10. python文件写入_python 文件读写操作