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