该程序生成项目列表的幂集背后的逻辑是什么
What is the logic behind this program for generating the power set of a list of items
我正在阅读这本关于决策树的书,在其中一节中,作者为我们提供了一个生成幂集的代码示例。解释太可怕了,虽然我理解所有操作的语法和含义。我不明白这个算法背后的原因
# generate all combinations of N items
def powerSet(items):
N = len(items)
# enumerate the 2**N possible combinations
for i in range(2**N):
combo = []
for j in range(N):
# test bit jth of integer i
if (i >> j) % 2 == 1:
combo.append(items[j])
yield combo
生成器是迭代大型迭代器的非常有效的方法。
可以调用一次!
它可以通过 'yield' 而不是函数中的 return 使代码 return 许多值,其中 return 一个整个数组,一个生成器一次产生一个值。这需要更少的内存。
产量组合错误生成组合
(2**N)
times after
我正在阅读这本关于决策树的书,在其中一节中,作者为我们提供了一个生成幂集的代码示例。解释太可怕了,虽然我理解所有操作的语法和含义。我不明白这个算法背后的原因
# generate all combinations of N items
def powerSet(items):
N = len(items)
# enumerate the 2**N possible combinations
for i in range(2**N):
combo = []
for j in range(N):
# test bit jth of integer i
if (i >> j) % 2 == 1:
combo.append(items[j])
yield combo
生成器是迭代大型迭代器的非常有效的方法。
可以调用一次! 它可以通过 'yield' 而不是函数中的 return 使代码 return 许多值,其中 return 一个整个数组,一个生成器一次产生一个值。这需要更少的内存。
产量组合错误生成组合
(2**N) times after