【发布时间】:2017-05-28 08:09:01
【问题描述】:
我正在尝试实现一个函数来生成列表xs 的幂集。
总体思路是我们遍历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
【问题讨论】:
-
您能提供更多上下文吗?示例输入和预期与实际输出?
-
捕获
[s.add(x) for s in powerSetCopy]的返回值肯定是错误的。它始终是Nones 的列表。s.add(x)返回None。 -
@user2993016 这段代码有不少错误。例如
powerSet = powerSet.extend(withX)会将None分配给powerSet,因为extend在原地修改并返回None。我建议学习更多关于 python 中的列表操作。