基本上我想做的是拿一个像这样的字符串:
-o-pp-gg-s-h
然后把它变成一系列字符串:
-o
-o-pp
-o-pp-gg
-o-pp-gg-s
-o-pp-gg-s-h
我知道我可以通过拆分字符串(str.split('-')
)来做到这一点,然后有一个连接子串的循环来产生输出('-'.join(lst)
)。但是,在Python中有更优雅的方法吗?
答案 0 :(得分:3)
列表理解!
s = "-o-pp-gg-s-h"
ss = s.split("-")
series = ["-".join(ss[:x]) for x in range(2,len(ss)+1)]
这够优雅吗?
答案 1 :(得分:1)
>>> s='-o-pp-gg-s-h'
>>> nlist=s.split('-')
>>> for i in range(len(nlist)):
... print '-'.join(nlist[:i])
...
-o
-o-pp
-o-pp-gg
-o-pp-gg-s
>>>
答案 2 :(得分:1)
>>> a
'-o-pp-gg-s-h'
>>> b=a.split('-')
>>> b
['', 'o', 'pp', 'gg', 's', 'h']
>>> for i in range(len(b)+1):
... print '-'.join(b[0:i])
-o
-o-pp
-o-pp-gg
-o-pp-gg-s
-o-pp-gg-s-h
答案 3 :(得分:1)
仅用于变种,使用accumulate
(在现代Python中):
In [23]: s = '-o-pp-gg-s-h'
In [24]: from itertools import accumulate
In [25]: list(accumulate(s.split('-'), lambda x,y: x+'-'+y))[1:]
Out[25]: ['-o', '-o-pp', '-o-pp-gg', '-o-pp-gg-s', '-o-pp-gg-s-h']