【问题标题】:Merging two list elements into one in python?在python中将两个列表元素合并为一个?
【发布时间】:2021-01-22 07:18:43
【问题描述】:

我有两个列表说:

list1 = ['a','b','a','b']
l2 =['e','d']

如何合并到新列表中

 l3 =['a_e','b_e','a_d',b_d']

【问题讨论】:

标签: python list merge


【解决方案1】:

试试这个方法:

list1 = ['a','b','a','b']
l2 =['e','d']

print([el1+'_'+el2 for el2 in l2 for el1 in sorted(set(list1))])

输出:

['a_e', 'b_e', 'a_d', 'b_d']

【讨论】:

    【解决方案2】:

    使用简单的 For 循环:

    list1 = ['a','b','a','b']
    l2 =['e','d']
    
    new_list = []
    for char in list1:
        for char_2 in l2:
            item = char + '_' + char_2
            new_list.append(item)
    
    print(new_list)
    

    输出

    ['a_e', 'a_d', 'b_e', 'b_d', 'a_e', 'a_d', 'b_e', 'b_d']
    

    如果您不想重复第一个列表中的项目(这可能是预期列表中的内容)

    使用一个集合将确保不是多个项目。

    list1 = ['a','b','a','b']
    l2 =['e','d']
    
    new_list = []
    for char in set(list1):
        for char_2 in l2:
            item = char + '_' + char_2
            new_list.append(item)
    
    print(new_list)
    
    
    ['a_e', 'a_d', 'b_e', 'b_d']
    

    使用列表理解

    list1 = ['a','b','a','b']
    l2 =['e','d']
    
    
    new_list = [char + '_' + char_2 for char_2 in l2 for char in set(list1)]
    print(new_list)
    

    注意

    如果对于预期的输出,您关心元素的顺序,您可以通过将集合中的第一个列表转回一个列表来简单地解决这个问题:

    list1 = ['a','b','a','b']
    l2 =['e','d']
    list1 = set(list1)
    list1 = list(list1)
    
    new_list = [char + '_' + char_2 for char_2 in l2 for char in list1]
    print(new_list)
    

    输出

    ['a_e', 'b_e', 'a_d', 'b_d']
    

    重复问题

    【讨论】:

      【解决方案3】:

      你可以这样做(这里我假设len(l2) == len(list1) / 2):

      l3 = [f'{list1[i]}_{l2[i//2]}' for i in range(len(list1))]
      

      如果您的列表很大,这种方法比其他答案中给出的方法更有效。

      【讨论】:

        猜你喜欢
        • 2014-06-16
        • 1970-01-01
        • 1970-01-01
        • 2018-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-27
        相关资源
        最近更新 更多