Python 3.x 计数二进制零';直到1点

Python 3.x 计数二进制零';直到1点,python-3.x,Python 3.x,要计算整数的二进制值,直到达到1为止。然后返回一个整数,而不是列表 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']

要计算整数的二进制值,直到达到1为止。然后返回一个整数,而不是列表

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']
binary=bin(1)[2:].zfill(8)
# 00000001
零=[x代表二进制中的x]#。。数零。。。直到1
打印(零)#应为7个整数,在1之前不输入=7
# ['0', '0', '0', '0', '0', '0', '0', '1']
输入: 00000001

预期产出:
所以我想我会按照OP的要求,把我的答案作为评论发布

第一:

zeros.count(“0”)
当然,我们可以让它更一般一些。考虑任何二进制数,加上零点到某个宽度:

>b=f“{19:010b}”
>>>b
'0000010011'
然后,您可以将这个二进制字符串拆分为
“1”

b.split(“1”) ['00000', '00', '', ''] 然后查找连续零的所有计数:

>>[b.split(“1”)中s的s.count(“0”)]
[5, 2, 0, 0]
然后可以过滤掉
0
的计数,因为这些计数对应于存在连续
1
位的区域


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

为什么希望
zeros=[x代表二进制中的x]
得到整数值7?这显然是一个列表理解,它创建了一个列表,而不是一个整数。可以只做
零。计数(“0”)
?不太清楚还有什么其他的输入需要考虑。我在努力学习,我在尝试做很多事情,比如
MAP=sum((lambda x:int(x)=0,二进制))
len('00000001'。拆分('1',1)[0])
@blorgon您提供的正确解决方案唯一可能的替代方法是,如果它有多个1和0返回两个整数,则继续计数到下一个1。但这不是问题所在。你的评论回答正确。如果提供了不同的二进制输入,例如
00010001
,请重新调整3、3。感谢您的帮助,将在时间限制后批准。非常感谢。我知道它列了个单子,但你明白我的意思。很高兴我能帮上忙!你说得对,你的答案说得对。除了解决我的问题,唯一的替代方法。就像我说的,如果你有一个0000001的二进制字符串要返回,两个3,3的整数。这意味着在位置4的第一个1之前3个零,在位置8的第二个1之前3个零。但这不是最初的问题。是的,可以很容易地
在b.split(“1”)中对s进行tuple(s.count(“0”)如果s)
这将给出二进制字符串中连续零的所有非零计数。