python利用递归方法实现求集合的幂集


Posted in Python onSeptember 07, 2020

什么是集合的幂集?

就是原集合中所有的子集(bai包括全集du和空集)构成的集族。可数集是zhi最小的无限集; 它的幂集和实数dao集一一对应(也称同势),是不可数集。 

不是所有不可数集都和实数集等势,集合的势可以无限的大。如实数集的幂集也是不可数集,但它的势比实数集大。 设X是一个有限集,|X| = k,则X的幂集的势为2的k次方。

代码

def powSet(S):
 #创建列表a存储S中的元素
 a=[]
 for i in S:
  a.append(i)
 #判断S中是否只有一个元素,作为递归的终点
 if len(a)==1:
  return set([frozenset(),frozenset(a)])
 
 powset=set()
 #遍历S中的每一个元素
 	for i in range(len(a)):
  S.remove(a[i])
  temp = set()
 #取S中的这一个元素去掉,得到集合S的下一层(相当于S-1),认为S-1幂集已知。
 #将去掉的元素与S-1幂集中每一个元素都求并,得到新集合temp,temp和S-1的幂集求并便得到S的幂集
  for j in powSet(S):
   temp.add(j.union({a[i]}))
   powset = powSet(S).union(temp)
  S.add(a[i])
 return powset
 #验证
s=set([1,2,3])
print(powSet(s))

#结果
{{frozenset({2}), frozenset({2, 3}), frozenset({1, 2}), frozenset({1, 2, 3}), frozenset({3}), frozenset({1}), frozenset(), frozenset({1, 3})}}

需要知识

幂集的概念

python set 和 frozenset 数据类型

心得体会

笔者在写代码时遇到的问题是认为powSet(S-1)(S-1代表S中去掉任一个元素)就完完全全地替代了真正去掉那一个随机元素的元素组成的幂集。

实际上这样是不完全的,因为设置的递归规则有缺陷,不可能完全遍历所有情况。

解决:借助于集合元素的不可重复添加这一特性,我们可以遍历遍历所有S中的元素,都让它们进行一次递归操作,这样做虽然会产生n(S)次重复,但是它可以考虑到所有情况。

到此这篇关于python利用递归方法实现求集合的幂集的文章就介绍到这了,更多相关python递归方法求集合的幂集内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
小白如何入门Python? 制作一个网站为例
Mar 06 Python
numpy中实现二维数组按照某列、某行排序的方法
Apr 04 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
May 24 Python
python使用turtle绘制分形树
Jun 22 Python
python实现二维插值的三维显示
Dec 17 Python
python的几种矩阵相乘的公式详解
Jul 10 Python
Python根据服务获取端口号的方法
Sep 25 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
Python基于jieba, wordcloud库生成中文词云
May 13 Python
Pycharm安装并配置jupyter notebook的实现
May 18 Python
学会迭代器设计模式,帮你大幅提升python性能
Jan 03 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 30 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 #Python
python简单利用字典破解zip文件口令
Sep 07 #Python
python 如何快速复制序列
Sep 07 #Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 #Python
python 装饰器的实际作用有哪些
Sep 07 #Python
通俗讲解python 装饰器
Sep 07 #Python
彻底搞懂python 迭代器和生成器
Sep 07 #Python
You might like
PHP网上调查系统
2006/10/09 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
JavaScript 指导方针
2007/04/05 Javascript
JS支持带x身份证号码验证函数
2008/08/10 Javascript
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
自定义jQuery选项卡插件实例
2013/03/27 Javascript
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
python del()函数用法
2013/03/24 Python
python处理数据,存进hive表的方法
2018/07/04 Python
获取Pytorch中间某一层权重或者特征的例子
2019/08/17 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
2015年学校财务工作总结
2015/05/19 职场文书