我有一个字符串,我需要生成一个列表,列出以给定分隔符结尾的所有子字符串的长度。你知道吗
例如:string='a0ddb0gf0',separator='0',所以我需要生成:lengs=[2,4,3],因为len('a0')==2,len('ddb0')=4,len('gf0')==3。你知道吗
我知道可以通过以下方法来实现(例如):
separators = [index for index in range(len(string)) if string[index]==separator]
lengths = [separators[index+1] - separators[index] for index in range(len(separators)-1)]
但我需要它做得非常快(对大量的数据)。为大量数据生成中间列表非常耗时。你知道吗
有没有一个解决方案可以快速而整洁地完成这项工作(py2.7)?你知道吗
我不知道这会有多快,但还有一个办法:
最快的?不知道。你可能会想分析一下。你知道吗
如果你真的不想包含零长度的字符串:
我个人喜欢^{}
这将根据每个元素是否等于分隔符对数据进行分组,然后获取元素不相等的每个组的长度(通过对组中的每个项求和1)。你知道吗
itertools函数通常相当快,尽管我不确定这比
split()
好多少。我认为有一点非常有利于它,那就是它可以无缝地处理分隔符字符的多次连续出现。它还将处理data
的任何iterable,而不仅仅是字符串。你知道吗相关问题 更多 >
编程相关推荐