列表中是否有str.join()?

时间:2012-11-04 00:11:09

标签: python list

我理解str.join()

>>> '|'.join(['1','2','3'])
'1|2|3'

是否有输出清单的东西?是否有输出的功能:

['1', '|', '2','|', '3']

即列出str.join()? (或任何其他可迭代?)

4 个答案:

答案 0 :(得分:5)

list('|'.join(['1','2','3']))

应该处理使用字符列表的技巧。

适用于所有对象的更通用的解决方案是:

from itertools import izip_longest, chain

def intersperse(myiter, value):
    return list(
        chain.from_iterable(izip_longest(myiter, [], fillvalue=value))
    )[:-1]

我不知道这个函数的内置/标准库版本。

行动中:

print intersperse([1,2,3], '|')

输出:

[1, '|', 2, '|', 3]

答案 1 :(得分:2)

这个怎么样?

>>> list('|'.join(['1','2','3']))
['1', '|', '2', '|', '3']

答案 2 :(得分:1)

a = [1, 2, 'str', 'foo']
print [x for y in a for x in y, '|'][:-1]
# [1, '|', 2, '|', 'str', '|', 'foo']

对于一般情况,请考虑roundrobin itertools recipe

答案 3 :(得分:0)

这个简单的生成器避免了构建列表(更快,节省内存):

def intersperse(iterable, element):
    iterable = iter(iterable)
    yield next(iterable)
    while True:
        next_from_iterable = next(iterable)
        yield element
        yield next_from_iterable

示例:

>>> list(intersperse(['1', '2', '3'], '|'))
['1', '|', '2', '|', '3']