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

 更新时间:2020年09月07日 10:43:15   作者:精灵之子  
这篇文章主要给大家介绍了关于python利用递归方法实现求集合的幂集的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

什么是集合的幂集?

就是原集合中所有的子集(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之自动获取公网IP的实例讲解

    Python之自动获取公网IP的实例讲解

    下面小编就为大家带来一篇Python之自动获取公网IP的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 浅谈Python从全局与局部变量到装饰器的相关知识

    浅谈Python从全局与局部变量到装饰器的相关知识

    今天给大家带来的是关于Python的相关知识,文章围绕着Python从全局与局部变量到装饰器的相关知识展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • 浅谈keras 模型用于预测时的注意事项

    浅谈keras 模型用于预测时的注意事项

    这篇文章主要介绍了浅谈keras 模型用于预测时的注意事项,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 浅谈python 四种数值类型(int,long,float,complex)

    浅谈python 四种数值类型(int,long,float,complex)

    下面小编就为大家带来一篇浅谈python 四种数值类型(int,long,float,complex)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Python链式调用数据处理实际应用实例探究

    Python链式调用数据处理实际应用实例探究

    本文将深入介绍Python链式调用的概念、原理以及实际应用,通过丰富的示例代码,帮助读者更全面地理解和应用这一编程技巧
    2024-01-01
  • python+selenium爬取微博热搜存入Mysql的实现方法

    python+selenium爬取微博热搜存入Mysql的实现方法

    这篇文章主要介绍了python+selenium爬取微博热搜存入Mysql的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • python数据XPath使用案例详解

    python数据XPath使用案例详解

    xpath是最常用且最便捷高效的一种解析方式,通用型强,其不仅可以用于python语言中,还可以用于其他语言中,数据解析建议首先xpath
    2021-09-09
  • python自动12306抢票软件实现代码

    python自动12306抢票软件实现代码

    这篇文章主要为大家详细介绍了python自动12306抢票软件的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • python实现网站的模拟登录

    python实现网站的模拟登录

    这篇文章主要介绍了python实现网站的模拟登录的相关资料,通过自己构造post数据来用Python实现登录过程,需要的朋友可以参考下
    2016-01-01
  • Python中魔法参数 *args 和 **kwargs使用详细讲解

    Python中魔法参数 *args 和 **kwargs使用详细讲解

    这篇文章主要介绍了Python中魔法参数 *args 和 **kwargs使用的相关资料,*args和**kwargs是Python中实现函数参数可变性的重要工具,分别用于接受任意数量的位置参数和关键字参数,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-12-12

最新评论