在Python中连接字符串的任意数量的项目

时间:2012-05-19 13:43:09

标签: python

给出一个列表['a','b','c','d','e','f']。要进行分割2 ..所以在第一个字符串中我想要取列表中的0,2,4个元素,然后将它们连接起来,用空格分隔符和第1,3,5个元素的第二个字符串分隔。 输出必须采用k = ["a c e", "b d f"]

的形式

实际的程序是接受一个字符串(例如{球,蝙蝠,玩偶,巧克力,蝙蝠,风筝}),也可以输入接受这些礼物的孩子的数量(例如2),然后将它们分开,以便第一个孩子得到礼物,走到后面,第二个孩子拿走礼物并站在后面,这样所有孩子都会收到礼物。如果礼物仍然存在,那么第一个孩子将再次获得礼物并且循环继续.... 以上所需的输出,例如:{“ball doll bat”,“bat choclate kite”}

2 个答案:

答案 0 :(得分:6)

lst = ['a','b','c','d','e','f']

k = [" ".join(lst[::2]), " ".join(lst[1::2])]

输出:

['a c e', 'b d f']

更通用的解决方案:

def group(lst, n):
    return [" ".join(lst[i::n]) for i in xrange(n)]

lst = ['a','b','c','d','e','f']
print group(lst, 3)

输出:

['a d', 'b e', 'c f']

答案 1 :(得分:6)

以下是为任意数量的群组执行此操作的一般方法:

def merge(lst, ngroups):
    return [' '.join(lst[start::ngroups]) for start in xrange(ngroups)]

以下是它的使用方法:

>>> lst = ['a','b','c','d','e','f']
>>> merge(lst, 2)
['a c e', 'b d f']

>>> merge(lst, 3)
['a d', 'b e', 'c f']