python匿名函数与bif-第五天

1.匿名函数(lambda)
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

语法:lambda [arg1 [,arg2,.....argn]]:expression

exa:
>>> g = lambda x,y : x + y
>>> g(3,4)
7

好处:使用lambda可以省下定义函数过程,使代码更加精简,不需要考虑命名的问题,简化代码可读性

2.两个牛逼的bif
*filter():过滤器

描述
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,
然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

语法:filter(function, iterable)
参数
function -- 判断函数。
iterable -- 可迭代对象。

>>> list(filter(None,[1,0,False,True]))
[1, True]
>>> list(filter(lambda x : x % 2,range(10)))
[1, 3, 5, 7, 9]

*map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表

语法:map(function, iterable, ...)
参数
function -- 函数
iterable -- 一个或多个序列

>>> list(map(lambda x : x * 2,range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

3.字典
字典用{}表示
字典是映射类型,字符串、列表、元组都是序列类型

>>> dict1 = {'李宁':'一切都有可能','耐克':'Just do it','阿迪达斯':'Impossible is nothing','鱼C工作室':'让编程改变世界'}
>>> print('鱼C工作室的口号是:',dict1['鱼C工作室'])
鱼C工作室的口号是: 让编程改变世界
>>> dict2 = {1:'one',2:'two',3:'three'}
>>> dict2[2]
'two'

利用元组构成映射关系创建字典
>>> dict3 = dict((('F',70),('i',105),('s',115),('h',104),('c',67)))
>>> dict3
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'c': 67}

利用关键字参数创建字典(里面的值可以通过key改变,如果字典中没有key,会添加到字典中)
>>> dict4 = dict(小甲鱼='让编程改变世界',苍井空='让av征服所有宅男')
>>> dict4
{'小甲鱼': '让编程改变世界', '苍井空': '让av征服所有宅男'}

4.字典中的方法
fromkeys():函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。
语法:dict.fromkeys(seq[, value])
参数
seq -- 字典键值列表。
value -- 可选参数, 设置键序列(seq)对应的值,默认为 None。

exa:
>>>seq = ('name', 'age', 'sex')
>>>dict = dict.fromkeys(seq, 10)
>>>print ("新的字典为 : %s" % str(dict))
新的字典为 : {'age': 10, 'name': 10, 'sex': 10}

get() 函数返回指定键的值。
语法:dict.get(key, default=None)
key -- 字典中要查找的键。
default -- 如果指定的键不存在时,返回该默认值。
返回指定键的值,如果键不在字典中返回默认值 None 或者指定的默认值。

exa:
>>>dict = {'Name': 'Runoob', 'Age': 27}
>>>print ("Sex 值为 : %s" % dict.get('Sex', "NA"))
Sex 值为 : NA

dict.keys():返回一个迭代器,可以使用 list() 来转换为列表
dict.values():返回一个迭代器,可以使用 list() 来转换为列表
dict.items():以列表返回可遍历的(键, 值) 元组数组
dict.clear():删除字典内所有元素
dict.copy():返回一个字典的浅复制
dict.pop(key[,default]):删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
dict.popitem():随机返回并删除字典中的最后一对键和值。
dict.setdefault(key, default=None):和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
dict.update(dict2):把字典dict2的键/值对更新到dict里

exa:
>>> for eachItem in dict1.items():
print(eachItem)

>>> a = {1:'one','小哈':'猴'}
>>> a
{1: 'one', '小哈': '猴'}
>>> b = {'小哈':'狗'}
>>> a.update(b)
>>> a
{1: 'one', '小哈': '狗'}

5.成员资格操作符(in 和 not in)
如果键在字典dict里返回true,否则返回false
exa:
>>> 31 in dict1
True

原文地址:https://www.cnblogs.com/LEPENGYANG/p/14118294.html