簡體   English   中英

在 python 中將兩個列表元素合並為一個?

[英]Merging two list elements into one in python?

我有兩個清單說:

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

如何合並到新列表中

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

試試這個方法:

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

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

Output:

['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)

Output

['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)

筆記

如果對於預期的 Output 您關心元素的順序,您可以通過將集合中的第一個列表轉回一個列表來簡單地破解它,如下所示:

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)

Output

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

如果您的列表很大,這種方法比其他答案中給出的方法更有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM