我有一个列表列表,如果列表中的任何元素都在两个列表中,我希望将所有列表合并在一起。
例如,请考虑以下列表: [[0],[1,2,3,4],[4,5,6],[6,7,8]]
输出应为: [0],[1,2,3,4,5,6,7,8]
答案 0 :(得分:0)
尝试以下方法。在python3中测试。
def mergeOrNot(list1,list2):
merge=False
for item in list1:
if item in list2:
merge=True
break
return merge
def uniqueList(list1,list2):
result = set()
for item in list1:
result.add(item)
for item in list2:
result.add(item)
return result
def cleverMergeLists(lists):
anotherLoopRequired=False
newList = []
for myList in lists:
addMyList=True
if not anotherLoopRequired:
for myList2 in lists:
if not anotherLoopRequired:
if(myList==myList2):
continue
if(mergeOrNot(myList,myList2)):
anotherLoopRequired=True
addMyList=False
newList.append(uniqueList(myList,myList2))
else:
newList.append(myList2)
if(addMyList):
newList.append(myList)
if anotherLoopRequired:
return cleverMergeLists(newList)
else:
return newList
print(cleverMergeLists([[0],[1,2,3,4],[4,5,6],[6,7,8]]))
输出以下内容:
[0], {1, 2, 3, 4, 5, 6, 7, 8}]
不能保证效率或任何东西,我只在你的清单上测试过,所以可能包含错误或者在某些情况下不起作用。
cleverMergeLists函数循环遍历列表中的项目,如果两个项目需要合并,则可以计算出来。如果他们这样做,它会在一个新列表中调用自己,其中两个项目合并,如果没有,它会返回传递给它的列表。