假设我有一个列表:
lists = [
[1, 2, 5, 7],
[3, 6, 8, 10],
[2, 7, 9, 11]
]如果它们具有相交的值,我希望合并它们(最低索引到最大索引),同时不复制重复的内容,以便输出如下所示:
new_lists = [
[1, 2, 5, 7, 9, 11],
[3, 6, 8, 10],
]我如何为管理大量的列表,同时又相对高效呢?
发布于 2019-07-04 21:53:32
下面是类似于我上面的评论的Python2.7方法:
lists = [
[1, 2, 5, 7, 13],
[3, 6, 8, 10, 13],
[2, 7, 9, 11]
]
thedict = {}
for sublist in lists:
for el in sublist:
thedict[el] = 1
keylist = thedict.keys()
# at this point, you have one merged list:
print str(keylist)
# You might want to sort it, as key order is not assured
keylist.sort()
# if you want smaller lists, then you can do something like this:
listsize = 5
outlistoflists = []
for i in range(0, len(keylist), listsize):
sublist = keylist[i:i + listsize]
outlistoflists.append(sublist)
print str(outlistoflists)发布于 2019-07-04 21:02:22
试试这个:
lists = [
[1, 2, 5, 7],
[3, 6, 8, 10],
[2, 7, 9, 11]
]
newlist=[]
for sublist in lists:
r=sublist[-1]
i=1
for sublist_ in lists[i:]:
if r in sublist_:
lists.remove(sublist_)
sublist.extend(sublist_[sublist_.index(r)+1:])
newlist.append(sublist)
i=i+1
print([list(i) for i in set(map(tuple, newlist))])输出
[[1, 2, 5, 7, 9, 11], [3, 6, 8, 10]]https://stackoverflow.com/questions/56893949
复制相似问题