如何基于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 相关文章推荐
使用Pyrex来扩展和加速Python程序的教程
Apr 13 Python
python实现上传下载文件功能
Nov 19 Python
python实现机器学习之多元线性回归
Sep 06 Python
在python里协程使用同步锁Lock的实例
Feb 19 Python
Python实现的多进程拷贝文件并显示百分比功能示例
Apr 09 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
python读写Excel表格的实例代码(简单实用)
Dec 19 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
Jan 16 Python
Python中包的用法及安装
Feb 11 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 Python
六种酷炫Python运行进度条效果的实现代码
Jul 17 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
php&java(二)
2006/10/09 PHP
针对初学PHP者的疑难问答(2)
2006/10/09 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
python实现的udp协议Server和Client代码实例
2014/06/04 Python
Python 类的特殊成员解析
2018/06/20 Python
Python基础学习之类与实例基本用法与注意事项详解
2019/06/17 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
生物工程专业求职信
2014/09/03 职场文书
业务员年终工作总结2015
2015/05/28 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL