如何基于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格式化压缩后的JS文件的方法
Mar 05 Python
使用Python3制作TCP端口扫描器
Apr 17 Python
python实时监控cpu小工具
Jun 21 Python
对Pandas MultiIndex(多重索引)详解
Nov 16 Python
pycharm debug功能实现跳到循环末尾的方法
Nov 29 Python
Python使用pyserial进行串口通信的实例
Jul 02 Python
Python进度条的制作代码实例
Aug 31 Python
tensorflow 初始化未初始化的变量实例
Feb 06 Python
python Django 反向访问器的外键冲突解决
May 20 Python
如何在windows下安装配置python工具Ulipad
Oct 27 Python
Python生成九宫格图片的示例代码
Apr 14 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 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
Ajax+PHP边学边练 之五 图片处理
2009/12/03 PHP
php下使用iconv需要注意的问题
2010/11/20 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
Extjs中常用表单介绍与应用
2010/06/07 Javascript
Javascript 面试题随笔
2011/03/31 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
vue实现分页组件
2020/06/16 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
Python解惑之True和False详解
2017/04/24 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
python 堆和优先队列的使用详解
2019/03/05 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
基于python实现操作redis及消息队列
2020/08/27 Python
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
2014年档案管理工作总结
2014/11/17 职场文书
运动会100米广播稿
2015/08/19 职场文书
Minikube搭建Kubernetes集群
2022/03/31 Servers