Python中的快速后缀生成

时间:2012-10-04 18:50:55

标签: python

我有一个字符串s,我需要从字符串生成一组后缀。例如,abcdef将导致数组[f, ef, def, cdef, bcdef, abcdef]。我是以直截了当的方式做到这一点:

def get_suffixes(s):
    sb_set = set()
    sb = ''
    for i in range(len(s)-1,-1,-1):
        sb = s[i] + sb
        sb_set.add(sb)

有更优化/快速的方法吗?我需要生成大量这样的后缀(字符串s长10K)

2 个答案:

答案 0 :(得分:3)

set(s[a:] for a in xrange(len(s)))怎么样?

(不确定为什么你使用一个集合,因为后缀必须是不同的,但是我保持使用set,因为你说这就是你想要的。如果你只是想要你也可以使用列表理解一个清单。)

答案 1 :(得分:2)

只需使用列表理解..稍后当您需要设置操作时转换为集合

s = "abcdef"    
suffixes = [s[i:] for i in range(1,len(s))]

>>> s = "abcdef"
>>> suffixes = [s[i:] for i in range(1,len(s))]
>>> suffixes
['bcdef', 'cdef', 'def', 'ef', 'f']

>>> s = "abcdef"
>>> suffixes = [s[i:] for i in range(len(s))]
>>> suffixes
['abcdef','bcdef', 'cdef', 'def', 'ef', 'f']