def partitions(set_):
if not set_:
yield []
return
for i in range(2**len(set_)//2):
parts = [set(), set()]
for item in set_:
parts[i&1].add(item)
i >>= 1
for b in partitions(parts[1]):
yield [parts[0]]+b
def get_partitions(set_):
for partition in partitions(set_):
yield [list(elt) for elt in partition]
我试图了解" i>> = 1"在这段代码中。有人可以向我解释一下吗?
编辑:有人可以解释一下"部分[i& 1]"还有吗?
答案 0 :(得分:0)
i >>= 1
是i = i >> 1
的赋值运算符简写,其中>>
是按位右移运算符。将i
按位向右逐位移位与将i
整数除以2的整数效果相同。