我理解str.join()
:
>>> '|'.join(['1','2','3'])
'1|2|3'
是否有输出清单的东西?是否有输出的功能:
['1', '|', '2','|', '3']
即列出str.join()
? (或任何其他可迭代?)
答案 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']