Python中的修改列表

2024-05-19 10:28:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码是:

>>> 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很多:)


Tags: 代码inforindexiflistalrepeat
3条回答

像这样的?你知道吗

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']

另一种选择:

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)))

这应该做到:

>>> 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']
>>> 

相关问题 更多 >

    热门问题