Skip to main content
 首页 » 编程设计

python之给定分隔符,生成字符串中子字符串长度列表的最快方法是什么

2025年05月04日32findumars

我有一个字符串,我需要生成一个以给定分隔符结尾的所有子字符串的长度列表。

例如: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]