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

方法一:回归实现

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
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 

方法二:二进制法

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实现求一个集合所有子集的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python实现输出一个序列的所有子序列示例

    如下所示: def sub(arr): finish=[] size = len(arr) end = 1 << size #end=2**size for index in range(end): # shift index array = [] for j in range(size): # 00,01,10,11 is symmetrical if (index >> j) % 2: # this result is 1, so do not have to write ==

  • Python编程之序列操作实例详解

    本文实例讲述了Python编程之序列操作.分享给大家供大家参考,具体如下: #coding=utf8 ''''' 序列类型有着相同的访问模式:它的每一个元素可以通过指定一个偏移量的方式得到. 可以通过切片操作一次获得多个元素. 序列的下标偏移量是从0开始到总元素数减一结束. 标准类型操作符一般都能试用与所有的序列类型. 序列类型操作符: --------------------------------------------------------------------------- 序列操作

  • Python实现最大子序和的方法示例

    描述 给定一个序列(至少含有 1 个数),从该序列中寻找一个连续的子序列,使得子序列的和最大. 例如,给定序列 [-2,1,-3,4,-1,2,1,-5,4], 连续子序列 [4,-1,2,1] 的和最大,为 6. 我 v1.0 class Solution: def maxSubArray(self, nums): """ :type nums: List[int] :rtype: int """ l = len(nums) i = 0 res

  • Python针对给定字符串求解所有子序列是否为回文序列的方法

    本文实例讲述了Python针对给定字符串求解所有子序列是否为回文序列的方法.分享给大家供大家参考,具体如下: 问题: 给定一个字符串,得到所有的子序列,判断是否为回文序列 思路: 对字符串遍历切片即可 下面是具体实现: #!usr/bin/env python # -*- coding:utf-8 -*- ''''' __AUthor__:沂水寒城 功能:对指定字符串寻找所有回文子序列 ''' def is_huiwen(one_str_list): ''''' 输入一个字符串列表,判断是否为回

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

    方法一:回归实现 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]

  • Java 通过位运算求一个集合的所有子集方法

    Java没有自带的求一个集合的所有子集的方法,我们可以通过集合的子集规律来求. 一个集合的所有子集等于2^该集合的长度.比如{c,b,a}的长度为3,这个集合的子集就有8个. 这句话看起来很简单,但同时也隐含着高深的哲理.其实一个集合的所有集合,和2^该集合的长度这个数字有关.比如上面的例子,{c,b,a}的长度为3,则可以用0-7表示其所有子集.如下所示,改数字所对应的位置为1,则说明我需要这个数字形成子集.从0-7的二进制表示,刚好代表完,一个长度为3,子集个数为8的所有子集. 0(000)

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

    实例如下所示: a = [1,2,3,4] b = set([1,2]) b.issubset(a) 以上这篇python判断一个集合是否为另一个集合的子集方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: python判断一个集合是否包含了另外一个集合中所有项的方法 深入解析Python中的集合类型操作符

  • C#中判断一个集合是否是另一个集合的子集的简单方法

    看到这个标题,我们首先想到的是循环遍历其中一个数组,判断数组中的每个元素是否都在另一个数组中出现了,以此来判断该数组是不是另一个数组的子集,但是这样做就太过复杂了,有没有简单一点的方法呢? 打个比方,有这样的两个集合: 复制代码 代码如下: string[] bigArr = new string[] { "a", "b", "c" }; string[] smallArr = new string[] { "a", &quo

  • python如何求数组连续最大和的示例代码

    题目描述: 一个有 n 个元素的数组,这 n 个元素既可以是正数也可以是负数,数组中连续的一个或多个元素可以组成一个连续的子数组,一个数组可能有多个这种连续的子数组,求子数组的最大值.例如,对于数组 [1,-2,4,8,-4,7,-1,-5] 而言,其最大和的子数组为 [4,8,-4,7],最大值为 15. 方法: 蛮力法 重复利用已经计算的子数组和 动态规划 优化的动态规划 1.蛮力法 找出所有的子数组,然后求出子数组的和,在所有子数组的和中取最大值. 代码实现: #!/usr/bin/env

  • Python必备技巧之集合Set的使用

    目录 定义一个集合 集合的大小和成员资格 集合的9种操作 计算集合并集 计算集合交集 计算集合之间差异 计算集合间对称差 计算后集合中是否有包含前集合的元素 计算一个集合是否是另一个集合的子集 计算一个集合是否是另一个集合的真子集 计算一个集合是否是另一个集合的超集 计算一个集合是否是另一个集合的正确超集 集合的9种修改 update计算并集 intersection_update 计算交集 difference_update 按差异修改被处理集合 symmetric_difference_up

  • python判断一个集合是否包含了另外一个集合中所有项的方法

    本文实例讲述了python判断一个集合是否包含了另外一个集合中所有项的方法.分享给大家供大家参考.具体如下: >>> L1 = [1, 2, 3, 3] >>> L2 = [1, 2, 3, 4] >>> set(L1).difference(L2) set([ ]) >>> set(L2).difference(L1) set([4]) 希望本文所述对大家的Python程序设计有所帮助.

  • python 求一个列表中所有元素的乘积实例

    如下所示: # 求一个列表中所有元素的乘积 from functools import reduce lt = [1,2,3,4,5] ln = reduce(lambda x,y:x * y,lt) print(ln) 以上这篇python 求一个列表中所有元素的乘积实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 用python求一个数组的和与平均值的实现方法

    如下所示: # coding = GBK a =[1,2,3,4,5] sum=0 b = len(a) print("这个数组的长度为:",b) for i in a: sum =sum +i print("这个数组之和为:",sum) print("这个数组平均数为",sum/b) 以上这篇用python求一个数组的和与平均值的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

随机推荐