代码之家  ›  专栏  ›  技术社区  ›  ABC

数到1的二进制零

  •  1
  • ABC  · 技术社区  · 3 年前

    binary = bin(1)[2:].zfill(8)
    # 00000001
    zeros = [x for x in binary] # .. Count zeros... Until 1
    print(zeros) # Expected 7 integer, not type <class 'list'> = 7 until 1
    # ['0', '0', '0', '0', '0', '0', '0', '1']
    

    输入: 00000001

    预期产量:

    1 回复  |  直到 3 年前
        1
  •  1
  •   ddejohn    3 年前

    所以我想我会把我的答案作为评论,按照OP的要求。

    第一:

    zeros.count("0")
    

    当然,我们可以让它更一般一点。考虑任何用零填充到一定宽度的二进制数:

    >>> b = f"{19:010b}"
    >>> b
    '0000010011'
    

    "1" :

    >>> b.split("1")
    ['00000', '00', '', '']
    

    然后找到连续零的所有计数:

    >>> [s.count("0") for s in b.split("1")]
    [5, 2, 0, 0]
    

    然后你就可以过滤掉 0 1 位。。。

    我不知道,我觉得没有足够的信息,所以这真的可以在这么多的方向!