我正在从MIT课程中编写一些代码,并将此代码作为帮助功能使用,但是有些部分对我的python不太了解 理解。
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
我不明白它是由列表,字典或其他迭代对象组成的许多不同组合。
我对这部分内容不屑一顾:
parts[i&1].add(item)
i >>= 1
这里有些人可以尝试向我解释这部分吗? 我在网上寻找一些东西,但是不确定我是否完全理解。
谢谢!
PS-有什么方法可以使可读性更强,并可以在排列,组合等功能中使用双向功能?