-1

我在使用以下功能时遇到问题

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

此函数返回错误:

类型错误:>> 不支持的操作数类型:'float' 和 'int'

注意:这个 python 库仅在 2.7 中受支持,我使用 2to3 来使用它。图书馆的其他部分按需要工作,所以我通常相信 2to3 工作。

我正在尝试在 IPython 3.5 中运行它,我听说像这样的一些错误可能会在 IPython 中专门发生,所以我想知道它是否与此有关。

4

1 回答 1

0

问题源于您试图Binary Right Shift (>>)在两种不同的数据类型(floatint)之间执行 a 。(int(((t & -t) // (next & -next)) >> 1) - 1)据我所知,将浮点数转换为 int应该可以工作。

于 2017-04-19T03:46:53.160 回答