python 生成list的所有的子集 (不使用递归且不引入标准库)
2024-08-29 01:13:06
不使用递归且不引入标准库,单纯用两个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)
最新文章
- java性能调优工具
- UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
- ada 图形编辑器 - GNAT GPL
- [转]优秀Python学习资源收集汇总
- iOS-RegexKitLite导入错误
- android应用中去掉标题栏的方法
- CSS优化技巧
- Java集合之Collection接口
- Android中Base64的简单使用
- 百度APIStore
- So many good projects for studying C programming lanuage.
- TEA算法
- logstash date插件
- 小结: Async &; Await
- 部署到IIS后出现ORA-12560的解决办法
- FOJ 2203 单纵大法好
- Swiper.js
- Mybatis(四)关联映射
- ubuntu环境下python虚拟环境的安装
- Xcode断点 中断不正常 每次断点都进入汇编
热门文章
- sql server 表2字段更新到表1,mysql
- NOIP游(GUNCU)记
- ModelSerializer 使用知识点_serializer.save(project=obj) #外键一定要作为实例传入save函数,否则无法新增成功
- Spring Boot教程(二十一)开发Web应用(2)
- linux crontab -e生成日期格式
- wannalfy 挑战赛7 F Masha与老鼠(贪心+dp)
- PHPStrom 配置DataSource来管理数据库
- 使用私有仓库(Docker Registry 2.0)管理镜像
- [LeetCode]-algorithms-Median of Two Sorted Arrays
- bootstrap基础讲解