1. 内置函数
-
list():转为列表
-
tuple():转为元组
-
dict():转为字典
-
set():转为集合
-
frozenset():转为不可变集合
-
str():转为字符串型
-
bytes():转为bytes类型
-
bytearray():返回一个新字节数组,这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。修改一个较长的字符串的某个位置,不会改变这个bytearray的内存地址
-
memoryview():返回给定参数的内存查看对象
-
slice():切片
-
reversed():把列表中的元素反序排列;它跟reverse的不同是不会改变原来的列表,生成一个新的迭代器返回,而reverse方法返回的是None,它是在原列表的基础上修改的
-
sorted():把列表以正序的方式排列,它与sort的不同是不会改变原来的列表,生成一个新的列表返回,而sort方法是在原列表的基础上修改的,节省内存;sort和sorted都有reverse参数
-
-
repr():用于%r格式化输出,在终端显示类型的标识
-
ord():根据unicode把字符转为数字
-
chr():根据unicode把数字转换为字符
-
acsii():只要是ascii码中的内容,就打印出来,不是就转换成\u格式的
-
len():统计字符或者元素的长度和个数
-
enumerate():枚举
-
all():判断是否有bool值为False的值,如果有一个False,则返回False,否则为True
-
any():判断是否有bool值为True的值,如果有一个为True,则返回True,否则为False
-
zip():拉链函数,返回一个迭代器。将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表,如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同
-
filter():过滤函数,用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。filter接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中
-
map():根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表
2. 匿名函数
-
定义:为了解决某些简单的功能需求而设计的一句话函数
-
格式:函数名=lambda 参数:返回值
-
匿名函数表达式:
-
cal1 = lambda n: n**2
-
cal2 = lambda: 1 == 2
-
cal3 = lambda n: True if n == 2 else False
3. 匿名函数的应用
# 计算x+y的值
# def func(x, y):
# return x + y
# print(func(1, 2))
func = lambda x, y: x + y
print(func(1, 2))
>>>
3
# 找出字典中values最大的key
dic = {'k1': 10, 'k2': 100, 'k3': 20}
# print(max(dic))
# print(max(dic.values()))
print(max(dic, key=lambda k: dic[k]))
>>>
k2
# 计算出列表中每个元素的平方
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(map(lambda i: i**2, lst)))
>>>
[1, 4, 9, 16, 25, 36, 49, 64, 81]
4. 匿名函数面试题
# 计算出x的值
d = lambda p: p*2
t = lambda p: p*3
x = 2
x = d(x)
x = t(x)
x = d(x)
print(x)
>>>
24
# 现有两个元组(('a'),('b')),(('c'),('d')),
# 请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
t1 = (('a'),('b'))
t2 = (('c'),('d'))
print(list(map(lambda t: {t[0]: t[1]}, zip(t1, t2))))
>>>
[{'a': 'c'}, {'b': 'd'}]
# 以下代码的输出是什么?请给出答案并解释。
# def multipliers():
# return [lambda x:i*x for i in range(4)]
# print([m(2) for m in multipliers()])
# 请修改multipliers的定义来产生期望的结果。
def multipliers():
return (lambda x: i*x for i in range(4))
print([m(2) for m in multipliers()])
# 把之前的列表推导式换成生成器表达式
>>>
[0, 2, 4, 6]