不使用递归且不引入标准库,单纯用两个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)

最新文章

  1. java性能调优工具
  2. UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
  3. ada 图形编辑器 - GNAT GPL
  4. [转]优秀Python学习资源收集汇总
  5. iOS-RegexKitLite导入错误
  6. android应用中去掉标题栏的方法
  7. CSS优化技巧
  8. Java集合之Collection接口
  9. Android中Base64的简单使用
  10. 百度APIStore
  11. So many good projects for studying C programming lanuage.
  12. TEA算法
  13. logstash date插件
  14. 小结: Async & Await
  15. 部署到IIS后出现ORA-12560的解决办法
  16. FOJ 2203 单纵大法好
  17. Swiper.js
  18. Mybatis(四)关联映射
  19. ubuntu环境下python虚拟环境的安装
  20. Xcode断点 中断不正常 每次断点都进入汇编

热门文章

  1. sql server 表2字段更新到表1,mysql
  2. NOIP游(GUNCU)记
  3. ModelSerializer 使用知识点_serializer.save(project=obj) #外键一定要作为实例传入save函数,否则无法新增成功
  4. Spring Boot教程(二十一)开发Web应用(2)
  5. linux crontab -e生成日期格式
  6. wannalfy 挑战赛7 F Masha与老鼠(贪心+dp)
  7. PHPStrom 配置DataSource来管理数据库
  8. 使用私有仓库(Docker Registry 2.0)管理镜像
  9. [LeetCode]-algorithms-Median of Two Sorted Arrays
  10. bootstrap基础讲解