如何基于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 07 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
Python中pandas dataframe删除一行或一列:drop函数详解
Jul 03 Python
Python enumerate函数功能与用法示例
Mar 01 Python
python pandas生成时间列表
Jun 29 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
python getpass模块用法及实例详解
Oct 07 Python
python django中8000端口被占用的解决
Dec 17 Python
Python自动重新加载模块详解(autoreload module)
Apr 01 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
Jun 02 Python
Python 如何调试程序崩溃错误
Aug 03 Python
利用python 下载bilibili视频
Nov 13 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防注入代码
2010/04/07 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
2013/04/19 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
sqlalchemy对象转dict的示例
2014/04/22 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
详解Python字典小结
2018/10/20 Python
Python3进制之间的转换代码实例
2019/08/24 Python
python对接ihuyi实现短信验证码发送
2020/05/10 Python
Python几种常见算法汇总
2020/06/02 Python
树莓派升级python的具体步骤
2020/07/05 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
HTML5+css3:3D旋转木马效果相册
2017/01/03 HTML / CSS
幼儿教师自我鉴定
2013/11/02 职场文书
机关作风建设心得体会
2014/10/22 职场文书
2014年调度员工作总结
2014/11/19 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
Java实现简单小画板
2022/06/10 Java/Android