在列表中已有的每个项目之间添加项目

sid*_*der 20 python list insert

可能重复:
python:使用元素散布列表的最优雅方式

假设我有以下列表:

['a','b','c','d','e']
Run Code Online (Sandbox Code Playgroud)

如何-在此列表中的每个项目之间添加新项目(在本例中为a ),以便我的列表如下所示?

['a','-','b','-','c','-','d','-','e']
Run Code Online (Sandbox Code Playgroud)

谢谢.

sen*_*rle 23

这是一个我希望非常快的解决方案 - 我相信所有这些操作都将以优化的c速度发生.

def intersperse(lst, item):
    result = [item] * (len(lst) * 2 - 1)
    result[0::2] = lst
    return result
Run Code Online (Sandbox Code Playgroud)

测试:

>>> l = [1, 2, 3, 4, 5]
>>> intersperse(l, '-')
[1, '-', 2, '-', 3, '-', 4, '-', 5]
Run Code Online (Sandbox Code Playgroud)


jon*_*esy 18

>>> list('-'.join(ls))
['a', '-', 'b', '-', 'c', '-', 'd', '-', 'e']
>>> 
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这仅适用于所有项目和分隔符都是单字符字符串的情况! (25认同)

Gal*_*Gal 7

list = ['a', 'b', 'c', 'd', 'e']
result = []
for e in list:
    result.append(e)
    result.append('-')
result.pop()
Run Code Online (Sandbox Code Playgroud)

似乎工作


Rom*_*huk 6

这适用于任何列表元素:

>>> sep = '-'
>>> ls = [1, 2, 13, 14]
>>> sum([[i, '-'] for i in ls], [])[:-1]
[1, '-', 2, '-', 13, '-', 14]
Run Code Online (Sandbox Code Playgroud)