簡體   English   中英

如何在不重復公共元素的情況下將列表的元素連接到新列表中?

[英]How to concatenate elements of a list into a new list while not repeating the common elements?

我在每行中有一個包含 2 個元素的二維列表,我想將兩行與一個公共元素和 append 連接到另一個列表,但不希望重復該公共元素。 這是類似於我嘗試過的東西

list1 = [['apple','orange'],['apple','banana'],['banana','mango'],['orange','mango']
list2 = []
for i in range(len(list1)-1):
    for j in range(i+1,len(list1)):
      if list1[i][0] in list1[j]:
        if list1[i][1] + list1[j] not in list2:
          list2.append(list1[i][1] + list1[j])
      elif list1[i][1] in list1[j]:
        if list1[i][0] + list1[j] not in list2:
          list2.append(list1[i][0] + list1[j])
print(list2)

但這給了我一個錯誤,說“只能將str(不是“list”)連接到str”,如果我只使用“+”來連接兩個列表,那么公共元素會被添加兩次。 預期結果是

[['apple','orange','banana'],['apple','orange','mango'],['apple','banana','mango'],['banana','mango','orange']]

當然,必須有一種更簡單的方法來連接,同時排除公共元素。

如果我理解正確:

list1 = [['apple','orange'],['apple','banana'],['banana','mango'],['orange','mango']]
list2 = []

for pair in list1:
   list2.extend(pair)

# Using list(set()) removes duplicates
list2 = list(set(list2))

print(list2)

list1的另一種解包方式:

list1 = [['apple','orange'],['apple','banana'],['banana','mango'],['orange','mango']]
list2 = []

def flatten(l):
    return [item for sublist in l for item in sublist]

# Using list(set()) removes duplicates
list2 = list(set(flatten(list1)+list2))

print(list2)

如果它不能回答您的問題,請在下方評論


有用的鏈接:

暫無
暫無

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

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