-5

我的代码是:

>>> lis=['ALRAGUL','AKAL','to7a']
>>> for i in lis:
  if i.startswith('AL'): 
    j=lis[lis.index(i)+1] 
    L=list(itertools.repeat(j, 2)) 
    lis[lis.index(i)+1]=L
    lis[lis.index(i)+1]=i[2: ] 
    lis[lis.index(i)]='AL'
>>> print lis
['AL', 'RAGUL', 'to7a']

但我希望结果变为:

['AL', 'RAGUL','AKAL' 'to7a']

并且我希望它以某种方式普遍意味着代码可以使用任何单词以及它们的任何排列方式例如我希望它在任何条件下拆分('AL')thx alot :)

4

3 回答 3

2

像这样的东西?

def separate(lst, chunk):
    for n in lst:
        if n.startswith(chunk):
            for x in n.partition(chunk)[1:]:
                yield x
        else:
            yield n

和输出:

In [104]: list(separate(['ALRAGUL','AKAL','to7a'], 'AL'))
Out[104]: ['AL', 'RAGUL', 'AKAL', 'to7a']
于 2013-04-29T20:34:24.493 回答
2

这应该这样做:

>>> lis = ['ALRAGUL', 'AKAL', 'to7a']
>>> for i, s in list(enumerate(lis)):
...   if s.startswith('AL'):
...     lis[i:i+1] = ['AL', s[2:]]
... 
>>> lis
['AL', 'RAGUL', 'AKAL', 'to7a']
>>> 
于 2013-04-29T20:35:33.123 回答
1

另外的选择:

from itertools import chain
import re

print filter(None, chain.from_iterable(re.split('^(AL)', el) for el in lis))

或者:

filter(None, chain.from_iterable(map(re.compile ('^(AL)').split, lis)))
于 2013-04-29T20:44:42.417 回答