Dan*_*elR 2 python functional-programming
我正在尝试编写一个函数,该函数可以在删除重复项的同时合并两个列表,但是以纯函数方式。例如:
a = [1,2,2]
b = [1,3,3,4,5,0]
union(a,b) --> [1,2,3,4,5,0]
Run Code Online (Sandbox Code Playgroud)
代码的命令式形式是:
def union(a,b):
c = []
for i in a + b:
if i not in c:
c.append(i)
return c
Run Code Online (Sandbox Code Playgroud)
我尝试了几种方法,但找不到不使用循环遍历项目的方法 - 我错过了什么?
小智 8
list(set(a + b))
Run Code Online (Sandbox Code Playgroud)
这结合了两个列表a,b并且 usingset只需要唯一的值,然后我们可以将其返回到list.
如果你想保留顺序可以使用collections.OrderedDict,否则就使用set。这些数据结构使用其项目的哈希值来保存它们,因此它们不会保留重复项。
In [11]: from collections import OrderedDict
In [12]: list(OrderedDict.fromkeys(a+b))
Out[12]: [1, 2, 3, 4, 5, 0]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10105 次 |
| 最近记录: |