我有幾個長列表的相關對象列表,我想分組以減少冗餘。僞代碼:摺疊列表以消除冗餘
>>>list_of_lists = [[1,2,3],[3,4],[5,6,7],[1,8,9,10]...]
>>>remove_redundancy(list_of_lists)
[[1,2,3,4,8,9,10],[5,6,7]...]
因此,包含相同元素的列表將摺疊爲單個列表。摺疊它們很容易,一旦我找到列表進行組合,我可以使列表成爲集合,並採取他們的聯合,但我不知道如何比較列表。我需要做一系列for
循環嗎?
我的第一個想法是,我應該循環查看子列表中的每個項目是否在任何其他列表中,如果是的話,合併列表然後重新開始,但這似乎非常低效。我做了一些搜索,發現這個:Python - dividing a list-of-lists to groups但我的數據不是結構化的。另外,我的實際數據是一系列字符串,因此無法從任何有意義的意義上排序。
我可以寫一些粗糙的循環代碼來完成這項工作,但我想知道是否有任何內置函數可以使這種比較更容易。也許在list comprehensions?
要清楚:如果任何兩個列表包含任何匹配的元素,您想要合併它們的元素?您是否有重複的元素,例如'[1,2,3]'和['1,5]'?一般來說,你應該看看使用元組和列表而不是列表來表示這種事情 – YXD
我也對YXD有同樣的問題 - 你想要移除什麼樣的冗餘? – user1941126
@YXD - 對你的第一個問題,是的。如果我的例子中還有一個'[1,5]'列表,那麼所有的元素都應該放在一個列表中。最後,我基本上想要一系列的集合(任何地方都沒有重複),但是我最初的數據可能在列表中有重複。也許我應該解釋我的數據實際上是什麼樣子/它來自哪裏......將在一秒內發佈一個編輯。 – kevbonham