私はこの文字列を持っています:11000000101010000000010000000000
0
後ろから打って止まるまで sを数えて、最後1
に s の総数を求めたいと思います。0
この特定のケースでは、答えとして私に与えるでしょう10
。
どんな助けでも大歓迎です。
私はこの文字列を持っています:11000000101010000000010000000000
0
後ろから打って止まるまで sを数えて、最後1
に s の総数を求めたいと思います。0
この特定のケースでは、答えとして私に与えるでしょう10
。
どんな助けでも大歓迎です。
を使用rindex()
して最後のインデックスを取得し、それを最大インデックス ( )1
から差し引くことができます。len(s) - 1
>>> s = '11000000101010000000010000000000'
>>> len(s) - s.rindex('1') - 1
10
>>> s = '11000000101010000000010000000000'
>>> len(s.rsplit('1', 1)[-1])
10
正規表現でそれを行う方法は次のとおりです。
>>> s = '11000000101010000000010000000000'
>>> match = re.search('0*$', s)
>>> match.end() - match.start()
10
質問はすでに回答されていることは知っていますが、これを行うことができるさらに別の方法を追加すると思いました。
itertools.takewhile
文字列の逆に使用できtakewhile
、数字は「1」ではありません。生成されたすべての 1 に合計を適用すると、答えが得られます。
>>> test = "11000000101010000000010000000000"
>>> sum(1 for x in takewhile(lambda i: i != '1', test[::-1]))
10
binary_str = "11000000101010000000010000000000"
import re
match_obj = re.search(r"0*$", binary_str)
if match_obj:
print len(match_obj.group())