嗨,我是Python和这个论坛的新手。
我的问题:
我有两个清单:
list_a = ['john','peter','paul']
list_b = [ 'walker','smith','anderson']
我使用zip
成功创建了这样的列表:
list_c = zip(list_a, list_b)
print list_c
# [ 'john','walker','peter','smith','paul','anderson']
但我要找的结果是一个列表:
list_d = ['john walker','peter smith','paul anderson']
无论我尝试什么,我都没有成功!我怎么能得到这个结果?
答案 0 :(得分:12)
您从两个列表中获取压缩名称,只需加入每一对,如此
print map(" ".join, zip(list_a, list_b))
# ['john walker', 'peter smith', 'paul anderson']
答案 1 :(得分:6)
List_C = ['{} {}'.format(x,y) for x,y in zip(List_A,List_B)]
答案 2 :(得分:0)
如果list_a和list_b总是有相同的长度,那么试试吧:
list_c = [list_a[i]+' '+list_b[i] for i in xrange(0,len(list_a))]
另一方面,如果list_a和list_b可能有不同的长度,那么:
list_c=[]
for i in xrange(0,len(list_a) if len(list_a)>len(list_b) else len(list_b)):
merged_item = (list_a[i] if i<len(list_a) else '')+\
(' ' if i<len(list_a) and i<len(list_b) else '')+\
(list_b[i] if i<len(list_b) else '')
list_c.append(merged_item)
答案 3 :(得分:0)
解决此问题的一种方法如下:
list_d = [] # desired output list
list_a = ['john', 'peter', 'paul']
list_b = ['walker', 'smith', 'anderson']
for i in range(len(list_a if len(list_a) < len(list_b) else list_b)):
f = " ".join([list_a[i], list_b[i]])
list_d.append(f)
print d
执行上述代码时的输出是:
['john walker', 'peter smith', 'paul anderson']