某网站今年笔试题,本质就是把某多维数组变成一维数组并去重。本来要求用JS实现,不过用python更简洁一点,就是对列表进行展开操作,递归就KO了。

首先来个不简洁的:

1
2
3
4
5
6
7
8
9
10
11
12
13
arr = [1, [1, 2, [2, 3]], [4], [4]]
final=[]
def change(x):
print "x is:",x
if isinstance(x, list):
for l in x:
print "l is:",l
change(l)
else:
final.append(x)
print "now final is",final
change(arr)
print final

简洁的:

1
2
change = lambda x: [y for l in x for y in change(l)] if type(x) is list else [x]
print change(arr)

至于去重就使用set()就可以了。