我在使用以下功能时遇到问题
def get_lexographically_next_bit_sequence(self, bits):
"""
Bit hack from here:
http://www-graphics.stanford.edu/~seander/bithacks.html#NextBitPermutation
Generator even does this in poker order rank
so no need to sort when done! Perfect.
"""
t = (bits | (bits - 1)) + 1
next = t | ((((t & -t) // (bits & -bits)) >> 1) - 1)
yield next
while True:
t = (next | (next - 1)) + 1
next = t | ((((t & -t) // (next & -next)) >> 1) - 1)
yield next
此函数返回错误:
TypeError:>>:'float'和'int'
不支持的操作数类型
注意: 这个python库只支持2.7,我使用2to3才能使用它。图书馆的其他部分按照需要工作,所以我一般都相信2to3可以工作。
我试图在IPython 3.5中运行它,我听说像这样的一些错误可能会在IPython中发生,所以我想知道它是否与此相关。
答案 0 :(得分:0)
问题源于您尝试在两种不同数据类型(float
和int
)之间执行(int(((t & -t) // (next & -next)) >> 1) - 1)
这一事实。使用{{1}}将float向下转换为int应该尽我所知。