我试图实现一个函数来生成列表的powersetxs
。
一般的想法是,我们遍历xs
的元素,然后选择是否包含x
。我面临的问题是withX
最终等于[None]
(一个具有None
的单例列表),因为(我认为)s.add(x)
返回None
。
这不是一个家庭作业,而是一个破解编码面试的练习。
def powerSetBF(xs):
powerSet = []
powerSet.append(set([]))
for x in xs:
powerSetCopy = powerSet[:]
withX = [s.add(x) for s in powerSetCopy] # add x to the list of sets
powerSet = powerSet.extend(withX) # append those entries
return powerSet
结果
可以在这里找到
itertools.combinations
的源代码,其中包含一些简洁的优化:https://docs.python.org/3/library/itertools.html#itertools.combinations
看看^{} recipes 中的
powerset
示例:对于一个长度不超过给定列表长度的^{} 整数,使它们可以作为一个对象一起^{} 和^{} 。
以下是不使用任何模块的递归解决方案:
相关问题 更多 >
编程相关推荐