Python笔记--Python语言的其他特性
lambda和filter:简单匿名函数
lambda本身不是一个函数,而是一个关键字。它告诉Python创建一个函数并在适当的位置使用它,而不是通过一个名称引用它。
由于缺少名称,lambda创建的函数被称为匿名函数。
filter函数接收一个列表,并基于函数中定义的标准移除元素。
filter_me = [1, 2, 3, 4, 23, 4, 5, 54, 89, 35, 56] result = filter(lambda x: x % 2 == 0, filter_me) print(*result)
可用使用lambda语句的结果给函数绑定一个名称。该名称只在创建名称的作用域内可用,就像其他名称一样。
filter_me = [1, 2, 3, 4, 23, 4, 5, 54, 89, 35, 56] func = lambda x: x % 2 == 0 result = filter(func, filter_me) print(*result)
lambda只能是一个简单函数,不能包含其他语句。
Map:短路循环
匿名函数经常用在Map函数中。map是一个特殊的函数,它用于需要对列表中的每个元素执行一个指定操作的情形。
它在实现这种操作时,不必写一个循环。
map_me = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] result = map(lambda x: "The letter is %s" % x, map_me) print(*result)
就像是循环一样,列表中的每一个元素都会被访问。
在列表中做出决策--列表解析
列表解析是指在解除对序列的引用的方括号中运用有限量的代码的能力,只有满足中括号中标准的那些元素被返回。使用列表解析
可以简单快速地访问一个序列中地指定成员。
列表解析可以用来在列表解除引用操作符(方括号)中编写小的循环和判定,以此来定义用以限制被访问的元素范围的参数。
例如,要创建一个列表,并打印出列表中的偶数,可以使用列表解析:
everything = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] print([x for x in everything if x % 2 == 0])
为循环生成迭代器
Python有一个能够创建迭代器的特殊特性,即range函数。
>>> f = range(10, 20) >>> print(*f) 10 11 12 13 14 15 16 17 18 19
如果只给range函数传递一个数值,那么它默认是从零开始的,这个数值可以是正数也以是负数。
默认步长是1,可以改变步长。
>>> f = range(15, 50, 3) >>> print(*f) 15 18 21 24 27 30 33 36 39 42 45 48