Python实现求一个集合所有子集的示例


本文摘自php中文网,作者不言,侵删。

这篇文章主要介绍了关于Python实现求一个集合所有子集的示例,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

方法一:回归实现

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

def PowerSetsRecursive(items):

  """Use recursive call to return all subsets of items, include empty set"""

   

  if len(items) == 0:

    #if the lsit is empty, return the empty list

    return [[]]

   

  subsets = []

  first_elt = items[0] #first element

  rest_list = items[1:]

   

  #Strategy:Get all subsets of rest_list; for each of those subsets, a full subset list

  #will contain both the original subset as well as a version of the sebset that contains the first_elt

   

  for partial_sebset in PowerSetsRecursive(rest_list):

    subsets.append(partial_sebset)

    next_subset = partial_sebset[:] +[first_elt]

    subsets.append(next_subset)

  return subsets

1

2

3

4

5

6

def PowerSetsRecursive2(items):

  # the power set of the empty set has one element, the empty set

  result = [[]]

  for x in items:

    result.extend([subset + [x] for subset in result])

  return result

方法二:二进制法

1

2

3

4

5

6

7

8

9

10

11

def PowerSetsBinary(items):

  #generate all combination of N items

  N = len(items)

  #enumerate the 2**N possible combinations

  for i in range(2**N):

    combo = []

    for j in range(N):

      #test jth bit of integer i

      if(i >> j ) % 2 == 1:

        combo.append(items[j])

    yield combo

相关推荐:

python判断一个集合是否为另一个集合的子集方法

Python实现简单文本字符串处理的方法

以上就是Python实现求一个集合所有子集的示例的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python实现从序列中移除重复项且保持元素间顺序不变

Python如何批量提取win10锁屏壁纸

Python的关键字有哪些

Python中图像融合、加法运算及图像类型转换的实现(附代码)

Python爬虫框架scrapy的使用教程

如何用Python画三角形

Python怎么批量注释

Python基础知识之二:网络通信数据传输

基于matplotlib Python实现正弦信号的时域波形和频谱图示例

Python判断两个list是否是父子集关系的实例

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...