<分区>
我有如下列表
list_1 = ['>name', 'aaa', 'bbb', '>name_1', 'ccc', '>name_2', 'ddd', 'eee', 'fff']
我试图在带有“>”符号的项目之间加入项目。所以我想要的是:
list_1 = ['>name', 'aaabbb', '>name_1', 'ccc', '>name_2', 'dddeeefff']
我怎样才能在 python 中做到这一点?
<分区>
我有如下列表
list_1 = ['>name', 'aaa', 'bbb', '>name_1', 'ccc', '>name_2', 'ddd', 'eee', 'fff']
我试图在带有“>”符号的项目之间加入项目。所以我想要的是:
list_1 = ['>name', 'aaabbb', '>name_1', 'ccc', '>name_2', 'dddeeefff']
我怎样才能在 python 中做到这一点?
最佳答案
使用生成器函数;这让您可以控制项目何时“完成”以产生:
def join_unescaped(it):
tojoin = []
for element in it:
if element.startswith('>'):
if tojoin:
yield ''.join(tojoin)
tojoin = []
yield element
else:
tojoin.append(element)
if tojoin:
yield ''.join(tojoin)
要根据您的输入生成一个新列表,将生成的生成器对象传递给 list()
函数:
result = list(join_unescaped(list_1))
演示:
>>> list_1 = ['>name', 'aaa', 'bbb', '>name_1', 'ccc', '>name_2', 'ddd', 'eee', 'fff']
>>> def join_unescaped(it):
... tojoin = []
... for element in it:
... if element.startswith('>'):
... if tojoin:
... yield ''.join(tojoin)
... tojoin = []
... yield element
... else:
... tojoin.append(element)
... if tojoin:
... yield ''.join(tojoin)
...
>>> list(join_unescaped(list_1))
['>name', 'aaabbb', '>name_1', 'ccc', '>name_2', 'dddeeefff']
关于python - 加入由分隔符分隔的python列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27457107/