繁体   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