寻找更多的pythonic apporach

Pau*_*aul 3 python

刚刚写了这个函数......

def nrofleadingchars(stringtotest, testchar='\t'):
    count = 0
    for c in stringtotest:
        if c == testchar:
            count = count + 1
        else:
            return count
    return count
Run Code Online (Sandbox Code Playgroud)

然而,感觉不到pythonic'够',建议?

Amb*_*ber 9

import itertools

def nrofleadingchars(stringtotest, testchar='\t'):
    return len(list(itertools.takewhile(lambda x: x == testchar, stringtotest)))
Run Code Online (Sandbox Code Playgroud)

由于需要构建列表,对于具有非常大的前缀的事物而言,这可能效率较低.如果我可能会处理这样的问题,我可能会写这个:

def num_leading_chars(a_string, prefix='\t'):
    for idx, char in enumerate(a_string):
        if char != prefix:
            return idx
    return len(a_string)
Run Code Online (Sandbox Code Playgroud)


Chr*_*tts 5

您可以删除匹配的前导字符,并根据长度计算差异.

def nrofleadingchars(stringtotest, testchar='\t'):
    return (len(stringtotest) - len(stringtotest.lstrip(testchar))
Run Code Online (Sandbox Code Playgroud)