【问题标题】:Python - concatenate 2 listsPython - 连接 2 个列表
【发布时间】:2014-05-03 17:58:59
【问题描述】:

您好,我是 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']

无论我尝试了什么,我都没有成功!我怎样才能得到这个结果?

【问题讨论】:

  • 顺便说一句,这不是一个论坛,而是一个问答网站:)

标签: python list python-2.7 concatenation


【解决方案1】:
List_C = ['{} {}'.format(x,y) for x,y in zip(List_A,List_B)]

【讨论】:

  • 我更喜欢这个答案,因为它很清晰,尽管它可能比映射方法慢。
  • @holdenweb:我通常坚持使用这种方法,以防某些数组值不是字符串。
【解决方案2】:

您从两个列表中获取压缩名称,只需加入每一对,就像这样

print map(" ".join, zip(list_a, list_b))
# ['john walker', 'peter smith', 'paul anderson']

【讨论】:

  • 这只是返回一个地图对象
【解决方案3】:

如果 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)

【讨论】:

    【解决方案4】:

    解决这个问题的一种方法如下:

    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']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多