Python中的泛型列表是否有类似“join”的函数?

时间:2014-04-01 13:55:23

标签: python

在Python中,字符串列表可以通过

连接在一起
','.join(['ab', 'c', 'def'])

但我怎么能轻易加入数字列表或其他一些东西?像这样:

0.join([1, 2, 3])  --->  [1, 0, 2, 0, 3]

现在我必须这样做:

sum([[x, 0] for x in [1, 2, 3]], [])[:-1]

4 个答案:

答案 0 :(得分:5)

你可以制作一个:

def join_generator(joiner, iterable):
    i = iter(iterable)
    yield next(i)  # First value, or StopIteration

    while True:
       # Once next() raises StopIteration, that will stop this
       # generator too.
       next_value = next(i)
       yield joiner
       yield next_value

joined = list(join_generator(0, [1, 2, 3, 4]))

答案 1 :(得分:1)

仅仅因为每个人都喜欢不可读的单行:

import itertools

def join(sep, col):
    return itertools.islice(itertools.chain.from_iterable(itertools.izip(itertools.repeat(sep), col)), 1, None)

P.S。:更好地使用RemcoGerlich's answer。它更具可读性。

答案 2 :(得分:0)

不是你想要的方式。您可以为总和编写for循环,或者您可以编写for循环并在列表中添加每个项目。否则,您将无法进行正在寻找的调整。

答案 3 :(得分:0)

正如大家都告诉你的那样,join是一个字符串方法而不是列表方法。

但你总能这样做:

[int(x) for x in '0'.join(map(str, [1, 2, 3]))]