[英]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.