python-17 高阶函数
高阶函数
sorted函数
def sort(iterable, *, key=None, reverse=False):
newlist =[]
for x in iterable:
for i,y in enumerate(newlist):
if x > y:
newlist.insert(i, x)
break
else:
newlist.append(x)
return newlist
使用到 str() 函数,sort()属于高阶函数
def sort(iterable, *, key=None, reverse=False):
newlist = []
for x in iterable:
cx = key(x) if key else x
for i, y in enumerate(newlist):
cy = key(y) if key else y
comp = cx > cy if reverse else cx < cy
if comp :
newlist.insert(i, x)
break
else:
newlist.append(x)
return newlist
map函数
将map中的元素转化为另一种形式的元素
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
list(map(lambda x:1 ,range(5)))
list(map(lambda x:6-x ,range(5)))
m = map(lambda x,y: (x,y), 'abcdefg', range(5))
for x in m :
print(x)
dict(map(lambda x,y: (x,y), 'abcdefg', range(5)))
dict(map(lambda x:x, zip('abcdefg', range(5))))
dict(map(lambda x:(x[0],str(x[1])), zip('abcdefg', range(5))))
dict(map(lambda x:(x%5, x), range(500)))
###########
{0: 495, 1: 496, 2: 497, 3: 498, 4: 499}
filter
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。