例如
>>> two_powers(42)
>>> (2, 8, 32)
我目前的幼稚实现(取自here https://stackoverflow.com/a/27936818/1177288)看起来像那样
def two_powers(num):
return tuple(2 ** i for i, j in enumerate(bin(num)[-1: 1: -1]) if j == '1')
但我希望有更快的方法来做到这一点。
尝试这个:
def two_powers(num):
powers = []
while num != 0:
powers.append(num & -num)
num = num & (num - 1)
return powers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)