【发布时间】:2015-07-15 08:32:21
【问题描述】:
好的,所以我有两个列表,如下所示:
- 他们可以并且将会有重叠的项目,例如,
[1, 2, 3, 4, 5]、[4, 5, 6, 7]。 - 重叠中不会有其他项目,例如,这不会发生:
[1, 2, 3, 4, 5],[3.5, 4, 5, 6, 7] - 列表不一定是有序的,也不一定是唯一的。
[9, 1, 1, 8, 7],[8, 6, 7]。
我想合并列表以保留现有顺序,并在最后一个可能的有效位置进行合并,并且不会丢失任何数据。此外,第一个列表可能很大。我目前的工作代码是这样的:
master = [1,3,9,8,3,4,5]
addition = [3,4,5,7,8]
def merge(master, addition):
n = 1
while n < len(master):
if master[-n:] == addition[:n]:
return master + addition[n:]
n += 1
return master + addition
我想知道的是 - 有没有更有效的方法来做到这一点?它可以工作,但我对此有点怀疑,因为它可能会在我的应用程序中运行到大型运行时 - 我正在合并大量字符串。
编辑:我希望 [1,3,9,8,3,4,5],[3,4,5,7,8] 的合并为:[1,3,9,8 ,3,4,5,7,8]。为清楚起见,我突出显示了重叠部分。
[9, 1, 1, 8, 7], [8, 6, 7] 应该合并到 [9, 1, 1, 8, 7, 8, 6, 7]
【问题讨论】:
-
您展示的案例的预期输出是什么?
-
master=master+addition
-
在第三个示例输入中,那些不重叠,那里的输出应该是什么。同样在您的代码的 sn-p 中,这些重叠在哪里?
-
@thefourtheye,我已经编辑了预期的输出。
-
@Ale 我已经编辑了答案。
标签: python list python-3.x merge