【发布时间】:2021-01-22 07:18:43
【问题描述】:
我有两个列表说:
list1 = ['a','b','a','b']
l2 =['e','d']
如何合并到新列表中
l3 =['a_e','b_e','a_d',b_d']
【问题讨论】:
-
您能否更详细地描述问题?还有 wb 边缘情况(如
len(list1) == 5)?
我有两个列表说:
list1 = ['a','b','a','b']
l2 =['e','d']
如何合并到新列表中
l3 =['a_e','b_e','a_d',b_d']
【问题讨论】:
len(list1) == 5)?
试试这个方法:
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']
【讨论】:
使用简单的 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))]
如果您的列表很大,这种方法比其他答案中给出的方法更有效。
【讨论】: