我正在尝试实现一个函数来生成列表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]
的返回值肯定是错误的。它总是一个由None
组成的列表。s.add(x)
返回的是None
。 - Paul RooneypowerSet = powerSet.extend(withX)
会将None
赋值给powerSet
,因为extend
是就地修改并返回None
。我建议您学习更多关于 Python 中列表操作的知识。 - Paul Rooney