python的高级函数

#1. 列表生成器

num = [x for x in range(1,10)]
print(num)

old = [x for x in range(1,100) if x % 2 == 1]
print(old)

print([x * x for x in range(10)])

a = ["a","b","c"]
b = [1,2,3]

gro = [x + str(y) for x in a for y in b]
print(gro)

print([x+str(y) for (x,y) in zip(a,b) ])

# 2. filter 函数用于过滤序列,和map类似,filter也接受一个函数和一个序列
# 和map 不同的是 filter 把传入的函数依次作用于每个元素
# 然后根据返回值是true 还是 false 决定保留还是丢弃该元素
def not_empty(s):
"""把一个序列中的空字符串删除掉"""
return s and s.strip()
seq = list(filter(not_empty,["a","b","c",None,""]))
print(seq)

print(bool(None and str.strip("None")))
print(bool("" and "".strip()))

b = [1,2,3,"a","b","c"]

after_filter = list(filter(lambda x:isinstance(x,int),b))
print(after_filter)

print(not_empty("A"))
# filter 函数返回的是一个iterator ,也就是一个惰性序列,所以要强迫filter完成计算结果,需要用list函数
# 获得所有结果,并返回list
def is_odd(x):
"""删掉偶数,只保留奇数"""
return x % 2 == 1

num = list(filter(is_odd,[1,2,3,4,5,6]))
print("保留奇数",num)
# 3. sorted函数也是一个高阶函数,可以按照一些我们想要的方式进行排序
sort_after = sorted([1,-9,-23,-99,59,65])
print(sort_after)
# 他还可以接受一个key函数,完成自定义的排序 ,例如按照绝对值大小排序

abs_sort= sorted([1,-9,-23,-99,59,65],key=abs)
print(abs_sort) # [1, -9, -23, 59, 65, -99]

t = [("bob",75),("Armda",92),("Fat",66),("Lily",88)]
new = sorted(t,key = lambda x : x[1],reverse=True ) # 这一块 x[1] 什么意思????
print(new) # [('Armda', 92), ('Lily', 88), ('bob', 75), ('Fat', 66)]

# 4. reduce函数 ,把一个函数作用在一个序列上,这个函数必须接受2个参数
# reduce把结果继续和序列的下一个元素做积累计算
from functools import reduce # 需要引用包 functools
print(reduce(lambda x,y: x+y,[1,3,5,7,9]))



# 5. map 函数 接受两个参数,一个是函数,一个是iterable,map将函数依次作用在序列的每个元素
# 并把结果作为新的iterator返回
numbers = [1,2,3,4,5,6]
print(list(map(lambda x:x*x,numbers)))



#6. zip 拉链函数
print(list(zip([1,2,3],[4,5,6])))

#####################################################################################################################
执行结果:

[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']
['a1', 'b2', 'c3']
['a', 'b', 'c']
False
False
[1, 2, 3]
A
保留奇数 [1, 3, 5]
[-99, -23, -9, 1, 59, 65]
[1, -9, -23, 59, 65, -99]
[('Armda', 92), ('Lily', 88), ('bob', 75), ('Fat', 66)]
25
[1, 4, 9, 16, 25, 36]
[(1, 4), (2, 5), (3, 6)]

posted @ 2022-10-10 16:48  Stary_tx  阅读(64)  评论(0编辑  收藏  举报