如何合并两个列表并排除重复项?
我想把两个独立的、各自有独特项目的列表合并成一个列表。
虽然有其他类似的问题,但似乎没有人有效地解决这个问题,因为这些列表有几百万个项目。
顺便说一下:难道只有我一个人讨厌标签建议框遮住“发布你的问题”按钮吗?
5 个回答
6
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后把它放到另一个地方。这就像是把书从一个书架搬到另一个书架一样。
有些时候,我们会遇到一些问题,比如数据的格式不对,或者我们想要的数据不在我们想要的地方。这就需要我们用一些工具来帮助我们解决这些问题。
在这个过程中,我们可能会用到一些代码,这些代码就像是我们的搬运工,帮助我们把数据从一个地方搬到另一个地方。我们需要确保这些搬运工能够正确地理解我们的指令,这样他们才能顺利完成任务。
总之,处理数据就像是搬家一样,我们需要合理安排,确保每样东西都能找到它的新家。
>>> l1 = range(10)
>>> l2 = range(5, 15)
>>> set(l1) | set(l2)
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
14
有一种稍微更有效的方法:
>>> first = [1, 2, 3, 4]
>>> second = [3, 2, 5, 6, 7]
# New way
>>> list(set(first + second))
[1, 2, 3, 4, 5, 6, 7]
#1000000 loops, best of 3: 1.42 µs per loop
# Old way
>>> list(set(first) | set(second))
[1, 2, 3, 4, 5, 6, 7]
#1000000 loops, best of 3: 1.83 µs per loop
这种新方法更有效,因为它只用了一个 set(),而不是两个。
38
使用一个 set
。
>>> first = [1, 2, 3, 4]
>>> second = [3, 2, 5, 6, 7]
>>> third = list(set(first) | set(second)) # '|' is union
>>> third
[1, 2, 3, 4, 5, 6, 7]