# 处理列表defspread(arg):
ret =[]for i in arg:ifisinstance(i,list):
ret.extend(i)else:
ret.append(i)return ret
# 将处理结果添加进新列表中defdeep_flatten(lst):
result =[]
result.extend(
spread(list(map(lambda x: deep_flatten(x)iftype(x)==listelse x, lst))))return result
v1 = deep_flatten([1,[2],[[3],4],5,[[13,14,520],(9,4,2,0)]])print(v1)
一个给定的函数,两组数据,返回这个函数两组数据传入后运行结果有差别的列表元素 以下的给定函数是floor与lambda v : v[‘x’]匿名取键函数
defdifference_by(a, b, fn):
b =set(map(fn, b))return[item for item in a if fn(item)notin b]from math import floor
v1 = difference_by([2.1,2.3],[3.4],floor)
v2 = difference_by([{'x':2},{'x':1}],[{'x':1}],lambda v : v['x'])print(v1, v2, sep='\n')
6、链式函数调用:在一行代码内调用多个函数
defadd(a, b):return a + b
defsubtract(a, b):return a - b
a, b =4,5
v1 =(subtract if a > b else add)(a, b)# a>b不满足,所以用else的add函数print(v1)
7、检查重复项:检查两个列表是否有重复项
defhas_duplicates(lst):returnlen(lst)!=len(set(lst))
x =[1,2,3,4,5,5]
y =[1,2,3,4,5]
v1 = has_duplicates(x)
v2 = has_duplicates(y)print(v1, v2, sep='\n')