day18---内置函数二和匿名函数

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参数

  • format():格式化输出

  • 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]
posted @ 2017-11-12 13:43  _岩哥  阅读(152)  评论(0)    收藏  举报