如何基于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 的 with 语句详解
Jun 13 Python
Python使用xlrd读取Excel格式文件的方法
Mar 10 Python
Python实现视频下载功能
Mar 14 Python
django小技巧之html模板中调用对象属性或对象的方法
Nov 30 Python
在python 中实现运行多条shell命令
Jan 07 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
Python 获取项目根路径的代码
Sep 27 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
Apr 15 Python
Python rabbitMQ如何实现生产消费者模式
Aug 24 Python
Python面向对象多态实现原理及代码实例
Sep 16 Python
python 动态绘制爱心的示例
Sep 27 Python
python scrapy简单模拟登录的代码分析
Jul 21 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变量修饰符static的使用
2013/06/28 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
ThinkPHP使用Smarty第三方插件方法小结
2016/03/19 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
dojo随手记 gird组件引用
2011/02/24 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
2018/11/14 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
2019/10/27 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
python构造函数init实例方法解析
2020/01/19 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
部队万能检讨书
2014/02/20 职场文书
人事专员的岗位职责
2014/03/01 职场文书
美术指导助理求职信
2014/04/20 职场文书
买房子个人收入证明
2014/10/12 职场文书
教师工作证明范本
2015/06/12 职场文书