重要的内置函数和匿名函数

匿名函数:lambda 关键字 -- 定义函数

x,y 形参
x + y 返回值 -- 只能返回一个数据类型

f = lambda x, y: x + y
print(f(1, 2))
print(f.__name__)

同一行定义 同一行调用

print((lambda x: x)(2))

lst = [lambda i: i * i for i in range(10)]
print(lst[2](2))

上述代码原理如下:
lst = []
for i in range(10):
    def func(i):
        return i * i
    lst.append(func)
print(lst[2](3))
上述代码改变(无形参):
lst = [lambda: i * i for i in range(10)]
print(lst[2]())

上述代码原理如下:
lst = []
for i in range(10):
    def func():
        return i * i
    lst.append(func)
print(lst[2]())

一行函数:

1、形参可以不写

2、返回值必须要写,返回值只能返回一个数据类型

练习题:

lst = list((lambda i: i * i for i in range(5)))
print(lst[2](4))

lst = [x for x in (lambda: i ** i for i in range(5))]
print(lst[2]())

重要内置函数

1、format()

不常用(对齐方式):

print(format(13, ">20"))  # 右对齐
print(format(13, "<20"))  # 左对齐
print(format(13, "^20"))  # 居中

常用(进制转换+自定义位数):

print(format(13, "08b"))  # 从0到8用b  b -- 二进制
print(format(13, "08d"))  # 从0到8用d  d -- 十进制
print(format(13, "08o"))  # 从0到8用o  o -- 八进制
print(format(13, "08x"))  # 从0到8用x  x -- 十六进制

2、过滤:filter()

lst = [1, 2, 3, 4, 5, 6, 7, 8]
print(list(filter(lambda x: x % 2 == 1, lst)))

上述代码分解:
lst = [1, 2, 3, 4, 5, 6, 7, 8]
def func(x):
    return x % 2 == 1
print(list(filter(func, lst)))  # func就是自己定义一个过滤条件,lst就是要迭代的对象

3、对象映射:map()

对可迭代对象中每个元素进行加工

print(list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6])))

4、反转(可迭代对象):reversed()

print(list(reversed("yulin")))

生成新的列表:

lst = [1, 2, 3, 4, 5]
lst1 = list(reversed(lst))
print(id(lst))
print(id(lst1))

没有生成新的列表:

lst = [1, 2, 3, 4, 5]
lst.reverse()
print(lst)

5、排序(生成新的):sorted()

print(sorted([1, 23, 43, 656, 241]))

降序 reverse = True :

lst = [1, 23, 5345, 1, 23, 12]
print(sorted(lst, reverse=True))

key= 指定排序规则:

dic = {"key1": 1, "key2": 2, "key3": 56}
print(sorted(dic, key=lambda x: dic[x], reverse=True))

6、取最大:max()

print(max([1, 2, -33, 4, 5], key=abs))

7、累计算:reduce()

from functools import reduce
print(reduce(lambda x, y: x - y, [1, 2, 3, 4, 5]))
posted @ 2020-10-27 09:45  Ylinn  阅读(91)  评论(0)    收藏  举报