如何基于python生成list的所有的子集


Posted in Python onNovember 11, 2019

这篇文章主要介绍了如何基于python生成list的所有的子集,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

不使用递归且不引入标准库,单纯用两个for循环即可得出一个list的所有子集

L = [1, 2, 3, 4]

List = [[]]
for i in range(len(L)):     # 定长
  for j in range(len(List)): # 变长
    sub_List = List[j] + [L[i]]
    if sub_List not in L:
      List.append(sub_List)
print('List =', List)

主要思想:

变长的 List 中的所有元素将会被不断地重复遍历,直到遍历完定长的 L

当然,不进行条件判断也行:

L = [1, 2, 3, 1]
List = [[]]
for i in range(len(L)):     # 定长
  for j in range(len(List)): # 变长
      List.append(List[j] + [L[i]])

print('List =', List)

最后,如果考虑到程序的效率问题,那么建议引入 python 标准库中的 itertools,然后调用 combinations 这个函数

这样可以更加高效地得到一个 list 的所有的子集

代码如下:

from itertools import combinations
L = [1, 2, 3, 1]
result_list = sum([list(map(list, combinations(L, i))) for i in range(len(L) + 1)], [])
print('result_list =', result_list)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python进阶教程之文本文件的读取和写入
Aug 29 Python
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
Python的time模块中的常用方法整理
Jun 18 Python
python基于twisted框架编写简单聊天室
Jan 02 Python
tensorflow训练中出现nan问题的解决
Feb 10 Python
15行Python代码带你轻松理解令牌桶算法
Mar 21 Python
在python中实现对list求和及求积
Nov 14 Python
Django管理员账号和密码忘记的完美解决方法
Dec 06 Python
Python 中使用 PyMySQL模块操作数据库的方法
Nov 10 Python
python标准库sys和OS的函数使用方法与实例详解
Feb 12 Python
OpenCV Python实现拼图小游戏
Mar 23 Python
Python接收手机短信的代码整理
Aug 02 Python
使用django和vue进行数据交互的方法步骤
Nov 11 #Python
如何使用python进行pdf文件分割
Nov 11 #Python
python实发邮件实例详解
Nov 11 #Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 #Python
原来我一直安装 Python 库的姿势都不对呀
Nov 11 #Python
Python帮你识破双11的套路
Nov 11 #Python
如何基于Python批量下载音乐
Nov 11 #Python
You might like
php设计模式之观察者模式的应用详解
2013/05/21 PHP
优化PHP代码技巧的小结
2013/06/02 PHP
PHP的PSR规范中文版
2013/09/28 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
JavaScript入门教程 Cookies
2009/01/31 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
浅析jQuery Ajax通用js封装
2016/06/22 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
vuex存储token示例
2019/11/11 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
python中pika模块问题的深入探究
2018/10/13 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
2018/10/22 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
Python接口测试数据库封装实现原理
2020/05/09 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
python打开文件的方式有哪些
2020/06/29 Python
优秀高中学生评语
2014/12/30 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
防溺水主题班会教案
2015/08/12 职场文书
初中生物教学随笔
2015/08/15 职场文书