如何基于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 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
Dec 14 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
分析python动态规划的递归、非递归实现
Mar 04 Python
python用户管理系统
Mar 13 Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
用python实现刷点击率的示例代码
Feb 21 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
Dec 11 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
浅谈在JupyterNotebook下导入自己的模块的问题
Apr 16 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 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
长波知识介绍
2021/03/01 无线电
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
JavaScript中Math.SQRT2属性的使用详解
2015/06/14 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
详解python进行mp3格式判断
2016/12/23 Python
python getopt详解及简单实例
2016/12/30 Python
Python 备份程序代码实现
2017/03/06 Python
python读取和保存视频文件
2018/04/16 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
python try except 捕获所有异常的实例
2018/10/18 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
Django中提示消息messages的设置方式
2019/11/15 Python
python 实现视频 图像帧提取
2019/12/10 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
pycharm导入源码的具体步骤
2020/08/04 Python
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
高一学生期末评语
2014/04/25 职场文书
银行求职信范文
2014/05/26 职场文书
药剂专业求职信
2014/06/20 职场文书
求职简历自我评价2015
2015/03/10 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
Elasticsearch 批量操作
2022/04/19 Python