在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]
答案 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]))]