Python 100个样例代码( 八 )

只是导入就直接执行 mymain 函数,这不符合我们预期 。
如果有主句,导入后符合预期:
In [6]: import MyModuleIn [7]: MyModule.mymain()Doing something in module MyModule95 字典默认值
In[1]: d = {'a': 1, 'b': 3}In[2]: d.get('b', []) # 存在键 'b'Out[2]: 3In[3]: d.get('c', []) # 不存在键 'c',返回[]Out[3]: []96 lambda 函数
lambda 函数使用方便,主要由入参和返回值组成,被广泛使用在 max, map, reduce, filter 等函数的 key 参数中 。
如下,求 x 中绝对值最大的元素,key 函数确定abs(x)作为比较大小的方法:
x = [1, 3, -5]y = max(x, key=lambda x: abs(x))print(y) # -597 max
求 x 中绝对值最大的元素,key 函数确定abs(x)作为比较大小的方法:
x = [1, 3, -5]y = max(x, key=lambda x: abs(x))print(y) # -598 map
map 函数映射 fun 到容器中每个元素,并返回迭代器 x
x = map(str, [1, 3, 5])for e in x:print(e, type(e))下面写法不够 Pythoner
for e in [1, 3, 5]:print(e, str(e)) # '1','3','5'99 reduce
reduce 是在 functools 中,第一个参数是函数,其必须含有 2 个参数,最后归约为一个标量 。
from functools import reducex = [1, 3, 5]y = reduce(lambda p1, p2: p1*p2, x)print(y) # 15下面写法不够 Pythoner:
y = 1for e in x:y *= eprint(y)100 filter
使用 filter 找到满足 key 函数指定条件的元素,并返回迭代器
如下,使用 filter 找到所有奇数:
x = [1, 2, 3, 5]odd = filter(lambda e: e % 2, x)for e in odd: # 找到奇数print(e)还有另外一种方法,使用列表生成式,直接得到一个odd 容器,
odd = [e for e in x if e % 2]print(odd) # [1,3,5]下面写法最不符合 Python 习惯:
odd = []for e in x:if e % 2:odd.append(e)print(odd) # [1,3,5]



推荐阅读