String 循环遍历字符串以查找特定字符的第一个索引

String 循环遍历字符串以查找特定字符的第一个索引,string,python-2.7,indexing,String,Python 2.7,Indexing,如果n是整数,上面的示例代码翻转第一个零位,然后查找并打印第二个零位的索引 我正在进行代码战,以练习我的技能,但似乎不知道如何格式化一个基本上实现了这个算法的算法 我应该在一行中找到合适的索引,并将2提高到该幂。我被调查过使用发电机和LLAMDAS。。。不知道该怎么办 那么,具体来说,我怎样才能 2**整数n中第二个零的索引 #在一行代码中 for i in reversed(bin(n|(n+1))[2:]):#loops through representation of # integ

如果n是整数,上面的示例代码翻转第一个零位,然后查找并打印第二个零位的索引

我正在进行代码战,以练习我的技能,但似乎不知道如何格式化一个基本上实现了这个算法的算法

我应该在一行中找到合适的索引,并将2提高到该幂。我被调查过使用发电机和LLAMDAS。。。不知道该怎么办

那么,具体来说,我怎样才能 2**整数n中第二个零的索引 #在一行代码中

for i in reversed(bin(n|(n+1))[2:]):#loops through representation of  
# integer n, converted to binary, and flips first 0 bit 
    if i == '0':
        print(str(count))
        count=0
        break
    count +=1
经过几天的研究,在这里问了五分钟后,偶然发现了答案。 “.替换(0,1,1)”和 “.find(0)”也会很有用

以上就是我最后提交的内容。如问题n |(n=1)所述,用于翻转n的二进制表示中最右边的零。从那里我颠倒了结果的字符串/二进制表示的顺序,并使用“.index”检索第一个要找到的“0”

另一种方法是对二进制数的操作,而不是我对原始问题的措辞

def secondRightmostZeroBit(n):
    return 2**bin(n|(n+1))[::-1].index('0')
在过去,我没有找到太多的理由来进行这种位操作,所以当我解释这样的代码时,我总是查看引用。如果你想理解它,我建议插入一个特定的数字n,转换成二进制,然后进行处理。这样做几次,就会清楚发生了什么。你也可以将它的各个部分插入到你的交互痛苦中,但除非你在看二进制文件,否则这对你没有多大好处。bin(n)和format(n,“8b”)对此很有用

def secondRightmostZeroBit(n):
    return ~n & (~n-1) & -(~n & (~n-1))