Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在分隔符处连接python列表_Python_Python 3.x_List - Fatal编程技术网

在分隔符处连接python列表

在分隔符处连接python列表,python,python-3.x,list,Python,Python 3.x,List,我有python列表,例如: list = ['|','angela','demario','|','|','david','lucia','|','|','michael','jackson','|'] 我希望输出列表为: output_list = ['angela demario', 'david lucia', 'michael jackson'] 那么,如何使用分隔符“|”拆分然后加入列表并获得所需的输出呢?在空白处加入,然后在分隔符上拆分。剩下的只是清理,从结果中删除空字符串 [

我有python列表,例如:

list = ['|','angela','demario','|','|','david','lucia','|','|','michael','jackson','|']
我希望输出列表为:

output_list = ['angela demario', 'david lucia', 'michael jackson']

那么,如何使用分隔符“|”拆分然后加入列表并获得所需的输出呢?

在空白处加入,然后在分隔符上拆分。剩下的只是清理,从结果中删除空字符串

[*filter(None, map(str.strip, ' '.join(yourlist).split('|')))] 
# ['angela demario', 'david lucia', 'michael jackson']

使用空格连接,然后使用分隔符拆分。剩下的只是清理,从结果中删除空字符串

[*filter(None, map(str.strip, ' '.join(yourlist).split('|')))] 
# ['angela demario', 'david lucia', 'michael jackson']

您可以为自己编写一个小生成器函数:

lst = ['|','angela','demario','|','|','david','lucia','|','|','michael','jackson','|']

def make_list(iterable):
    stack, collect = [list(), False]
    for item in iterable:
        if item == "|" and not collect:
            collect = True
        elif item == "|" and collect:
            yield " ".join(stack)
            stack, collect = [list(), False]
        elif collect is not False:
            stack.append(item)

    if stack:
        yield " ".join(stack)


output_list = [item for item in make_list(lst)]
print(output_list)
# ['angela demario', 'david lucia', 'michael jackson']

将其他一切放在一边,调用变量
列表总是一个坏主意。

您可以自己编写一个小生成器函数:

lst = ['|','angela','demario','|','|','david','lucia','|','|','michael','jackson','|']

def make_list(iterable):
    stack, collect = [list(), False]
    for item in iterable:
        if item == "|" and not collect:
            collect = True
        elif item == "|" and collect:
            yield " ".join(stack)
            stack, collect = [list(), False]
        elif collect is not False:
            stack.append(item)

    if stack:
        yield " ".join(stack)


output_list = [item for item in make_list(lst)]
print(output_list)
# ['angela demario', 'david lucia', 'michael jackson']

把其他事情都放在一边,调用变量
列表总是个坏主意。

或者。。。您可以利用
itertools.groupby
并执行以下操作:
[''.join(g)for k,g in itertools.groupby(d,lambda L:L='|')如果不是k]
感谢各位回答我的问题,但请查看cs95的回复,这对我很有效@琼克莱门茨:甜蜜:-)或。。。您可以利用
itertools.groupby
并执行以下操作:
[''.join(g)for k,g in itertools.groupby(d,lambda L:L='|')如果不是k]
感谢各位回答我的问题,但请查看cs95的回复,这对我很有效@JonClements:Sweet:-)怎么样
''。加入(d)。剥去('|')。分开('| |'))
?@JonClements嗨!这是一个很好的方法,但是假设分隔符总是“| |”。在有限的背景下,这可能是不够的。也非常直截了当地对待空格。@KaranNayak:做一个好的堆栈溢出者,如果答案对你有帮助,就接受它(左边绿色的勾号)。@Jan++感谢你同样有用的答案@cs95:谢谢,但与你和Jon的单行程序解决方案相比,我的解决方案看起来有点残废……不如
“”。加入(d)。剥离(“|”)。拆分(“||”)
?@JonClements嗨!这是一个很好的方法,但是假设分隔符总是“| |”。在有限的背景下,这可能是不够的。也非常直截了当地对待空格。@KaranNayak:做一个好的堆栈溢出者,如果答案对你有帮助,就接受它(左边绿色的勾号)。@Jan++感谢你同样有用的答案@cs95:谢谢,但与你和Jon的单行程序解决方案相比,我的看起来有点残废。。。