我有一个字符串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)
答案 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']