python处理算法是真的简单,来个小例子:
现在有五个list 分别为a,b,c,d,e,取他们的交集,起初我这么写:
a=[4]
b=[4,2]
c=[3,4]
d=[1,4]
e=[5,4]
item_list = [a,b,c,d,e]
def test(item_list):
print item_list
if len(item_list) == 1:
return item_list[0]
elif len(item_list) == 0:
return []
flag = 0
for item in item_list:
if len(item) > 0:
pass
else:
flag = 1
if flag == 1:
return []
else:
item_list.append(list(set(item_list[0]).intersection(set(item_list[1]))))
item_list.remove(item_list[0])
item_list.remove(item_list[0])
item_list = test(item_list)
return item_list
item_list = test(item_list)
print item_list
代码看着很不舒服,而且效率也低,于是改进如下:
fm = lambda x,y: list(set(x).intersection(set(y))) if isinstance(x, list) and isinstance(y, list) else 'error'
fn = lambda x: x[0] if len(x) == 1 else [] if len(x) == 0 else reduce(fm,tuple(y for y in x))
item_list= fn(item_list)
print item_list