我有一个字符串,我需要生成一个以给定分隔符结尾的所有子字符串的长度列表。
例如:string = 'a0ddb0gf0', separator = '0',所以我需要生成:lengths = [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)?
请您参考如下方法:
最快?不知道。您可能想对其进行概要分析。
>>> print [len(s) for s in 'a0ddb0gf0'.split('0')]
[1, 3, 2, 0]
而且,如果您真的不想包含零长度字符串:
>>> print [len(s) for s in 'a0ddb0gf0'.split('0') if s]
[1, 3, 2]
