如何基于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 28 Python
Python 编码处理-str与Unicode的区别
Sep 06 Python
python中requests和https使用简单示例
Jan 18 Python
python爬取网页转换为PDF文件
Jun 07 Python
python3.4控制用户输入与输出的方法
Oct 17 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
Python获取数据库数据并保存在excel表格中的方法
Jun 12 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
Jan 08 Python
详解Python 重学requests发起请求的基本方式
Feb 07 Python
pyqt5中动画的使用详解
Apr 01 Python
TensorFlow打印输出tensor的值
Apr 19 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 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
JQuery live函数
2010/12/24 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
神经网络(BP)算法Python实现及应用
2018/04/16 Python
浅析Python函数式编程
2018/10/06 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
2020/06/01 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
初中毕业生的自我评价
2014/03/03 职场文书
教师节促销方案
2014/03/22 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
安全保证书怎么写
2015/02/28 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书
Nginx+Tomcat实现负载均衡、动静分离的原理解析
2021/03/31 Servers
Python基础之hashlib模块详解
2021/05/06 Python
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
nginx七层负载均衡配置详解
2022/07/15 Servers