如何基于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端口扫描系统实现方法
Nov 19 Python
Python对列表排序的方法实例分析
May 16 Python
Django日志模块logging的配置详解
Feb 14 Python
Python代码实现KNN算法
Dec 20 Python
django ajax json的实例代码
May 29 Python
浅谈python之高阶函数和匿名函数
Mar 21 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 Python
windows下python虚拟环境virtualenv安装和使用详解
Jul 16 Python
python同时替换多个字符串方法示例
Sep 17 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
Feb 17 Python
Python SQLAlchemy库的使用方法
Oct 13 Python
用Python生成会跳舞的美女
Jan 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
php性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
php在文件指定行中写入代码的方法
2012/05/23 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
javascript实现轮显新闻标题链接
2007/08/13 Javascript
JavaScript 拖拉缩放效果
2008/12/10 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
遍历json 对象的属性并且动态添加属性的实现
2016/12/02 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
解析Python编程中的包结构
2015/10/25 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
PyQt5实现简易电子词典
2019/06/25 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
jupyter notebook清除输出方式
2020/04/10 Python
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
html5 application cache遇到的严重问题
2012/12/26 HTML / CSS
绿色环保标语
2014/06/12 职场文书
植物园观后感
2015/06/11 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
初三化学教学反思
2016/02/22 职场文书
python数字图像处理:图像简单滤波
2022/06/28 Python