如何基于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通过装饰器检查函数参数数据类型的方法
Mar 13 Python
Python遍历文件夹和读写文件的实现方法
May 10 Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 Python
Python函数装饰器常见使用方法实例详解
Mar 30 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
python解析xml文件方式(解析、更新、写入)
Mar 05 Python
pycharm安装及如何导入numpy
Apr 03 Python
Python中zip函数如何使用
Jun 04 Python
Python sorted对list和dict排序
Jun 09 Python
python/golang 删除链表中的元素
Sep 14 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 Python
七个非常实用的Python工具包总结
Jun 15 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修改Linux或Unix口令的方法分享
2012/01/30 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
收集前端面试题之url、href、src
2018/03/22 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
react 生命周期实例分析
2020/05/18 Javascript
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
虚拟机下载python是否需要联网
2020/07/27 Python
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
Oracle快照(snapshot)
2015/03/13 面试题
《童年》教学反思
2014/02/18 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
生物技术专业求职信
2014/06/10 职场文书
学校志愿者活动总结
2014/06/27 职场文书
2015年师德师风承诺书
2015/01/22 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书