在python中将两个列表元素合并为一个?

2024-05-16 07:54:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两份清单:

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

我如何进入一个新的列表

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

Tags: 列表l3l2list1
3条回答

使用简单的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']

重复问题

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

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

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

试着这样做:

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

相关问题 更多 >