以下是我遇到的任務:比較2列表的內容
給定2個列表的列表,將它們過濾爲只有沒有任何共同點的項目。例如,如果內部列表相同,則將其過濾掉。如果內部列表至少有一個共同的項目,也將其過濾掉。
注意:只有一層嵌套。內部列表僅包含字符串。我有一個可行的解決方案,但它非常麻煩。尋找反饋改進:
首先,我在這兩個列表中篩選出準確匹配:
l3 = filter(lambda x: x not in l2, l1)
l4 = filter(lambda x: x not in l1, l2)
我最終沒有完全相同的項目列表2名列表。現在我想遍歷內部列表,並擺脫與其他內部列表共享項目的任何內容。
我做:
for i in l3:
for j in i:
for k in l4:
if j in k:
print j, k
removel3.append(tuple(i))
removel4.append(tuple(k))
for i in l4:
for j in i:
for k in l3:
if j in k:
removel3.append(tuple(k))
removel4.append(tuple(i))
for i in list(set(removel3)):
l3.remove(list(i))
for i in list(set(removel4)):
l4.remove(list(i))
(建築東西單獨列出,因爲直接在迭代循環去除弄亂列表索引和跳躍項目從列表中刪除,必須有這樣做的更好的方法。 ,但我不知道。)
但是是的。它完成了工作,但是從元組到更多元組設置爲列表......聽起來非常和諧。 :)很高興看到任何反饋!
編輯:
樣品輸入:
l1 = [['A', 'B', 'C'], ['D', 'E'], ['F', 'G', 'H']]
l2 = [['A', 'B', 'C'], ['D', 'I'], ['K', 'L', 'M']]
所有上述轉換後,最終有:
>>> l3
[['F', 'G', 'H']]
>>> l4
[['K', 'L', 'M']]
你能不能給一個樣本輸入和預期的輸出? – Claudiu
向我們展示一些數據:樣本輸入和所需輸出。 – FMc
@FMc:偉大的思想家一樣想 – Claudiu