三元运算式、lambda表达式、内置函数map、reduce、filter以及yield生成器

一、三元运算(式)

对于一般简单的if else条件判断句可以用三元运算来表示

具体模式为:

if condition:
  expr1
else:
  expr2
等价于:
expr1 if condition else expr2

解释:如果if condition条件成立就执行expr1表达式,否则就执行else expr2表达式

示例①

>>> if 2 == 2:
...    name = ‘cool‘
... else:
...    name =‘hot‘
... 
>>> name = ‘cool‘ if 2==2 else ‘hot‘
>>> print name
cool
>>>

二、lambda表达式:

对于简单的函数可以用另外一种方式来代替,即lambda

比如有如下函数:

>>> def fun(arg):
...      return arg + arg
... 
>>> 
>>> result = fun(100) 
>>> print result
200
>>>

定义一个变量f_lambda,将lambda arg:arg+1赋予f_lambda

>>> f_lambda = lambda arg:arg +1
>>> result = f_lambda(111)
>>> print result
112
>>>

也可以用其他表达式:

>>> test = lambda a:a**2
>>> test_result = test(3)
>>> print test_result
9
>>>

从上面的例子可以看出,lambda后面表达式可以随意定义,只要符合Python的语法要求。

lambda表达式:

①用于处理简单逻辑

②会自动返回数据

三、内置函数map

map的作用是对序列中每个元素进行操作,然后输出新的序列

>>> num1 = [10,9,8,7,6]
>>> num2 = map(lambda a:a**2,num1)
>>> print num2
[100, 81, 64, 49, 36]
>>> 
>>> num3 = [1,2,3,4,5]
>>> num4 = map(lambda a,b:a -b,num1,num3)
>>> print num4
[9, 7, 5, 3, 1]
>>>

或者

>>> num = [12,33,55,85]
>>> def func(arg):
...     return arg + 10
... 
>>> new_num = map(func,num)
>>> print new_num
[22, 43, 65, 95]
>>>

对于上述例子实质解释如下:

>>> new_num = []
>>> for item in num:
...     new_item = item + 10
...     new_num.append(new_item)
... 
>>> 
>>> print new_num
[22, 43, 65, 95]

四、内置函数filter

filter的作用的是将序列中满足条件的过滤出来然后形成新的序列

>>> num1 = [10,9,8,7,6]
>>> tmp = filter(lambda arg:arg >5,num1) 
>>> print tmp
[10, 9, 8, 7, 6]
>>>

或者

>>> tmp2 = filter(lambda n:n >5,num1)     
>>> print tmp2
[10, 9, 8, 7, 6]
>>>

或者

#!/usr/bin/env python
# -*- coding:utf8 -*-
num = [11,22,0,33]
print filter(None,num)
[[email protected] day004]# python lam.py 
[11, 22, 33]
[[email protected] day004]# 
[[email protected] day004]# cat  lam.py    
#!/usr/bin/env python
# -*- coding:utf8 -*-
num = [11,22,0,33,""]
print filter(None,num)
[[email protected] day004]# python lam.py  
[11, 22, 33]
[[email protected] day004]# cat  lam.py   
#!/usr/bin/env python
# -*- coding:utf8 -*-
num = [11,22,0,33,"",False]
print filter(None,num)
[[email protected] day004]# python lam.py  
[11, 22, 33]

小结:从上可以发现,默认情况下,当用filter进行处理数据时,filter会将布尔值为真的输出(一般将布尔值为True的返回到新列表中,反之不会返回到新列表中),为假的忽略掉;当然filter中也可以传入函数,如上例中的lambda语句;

五、内置函数reduce

reduce的作用是对序列内的所有元素进行操作

>>> num1 = [10,9,8,7,6]                  
>>> result =reduce(lambda arg1,arg2:arg1+arg2,num1)
>>> print result
40
>>> num5 = [1,2,3,4,5,6]  
>>> sum = reduce(lambda a,b:a+b,num5)
>>> print sum
21
>>>

# reduce的第一个参数,函数必须要有两个参数

# reduce的第二个参数,要循环的序列

# reduce的第三个参数,初始值

六、yield生成器

有如下例子:

>>> print range(8)
[0, 1, 2, 3, 4, 5, 6, 7]
>>> print xrange(8)
xrange(8)
>>>

从上面可以发现,range可以生成一个列表,即在内存中创建指定的数字,而xrange则不会,接着往下看:

>>> for n in xrange(8):
...     print n
... 
0
1
2
3
4
5
6
7
>>>

xrange只有在进行循环的时候才会创建数字,即在迭代的时候才会去创建;

时间: 2024-09-29 22:08:19

三元运算式、lambda表达式、内置函数map、reduce、filter以及yield生成器的相关文章

day05 协程函数,递归函数,匿名函数lambda,内置函数map reduce filter max min zip sorted,匿名函数lambda和内置函数结合使用,面向过程编程与函数编程,模块与包的使用,re模块内置函数

基础篇 本章大纲: 协程函数 递归函数 匿名函数lambda 内置函数map reduce filter  max min zip sorted 匿名函数lambda和内置函数结合使用 面向过程编程与函数编程 模块与包的使用 re模块内置函数 一,协程函数 注意:函数先定义,后使用.这是函数第一原则.函数主要分为定义,调用 1.1,什么是协程函数 协程函数特点:yield变为表达式,可以通过g.send(value)传值,用send传值时协程函数需要初始化,也可以说是生成器函数的一种 1.2,协

[python基础知识]python内置函数map/reduce/filter

python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法)来迭代遍历每个序列中的元素. 返回bool_func结果为true的元素的序列(注意弄清楚序列是什么意思)http://blog.csdn.net/bolike/article/details/19997465序列参考</a> 如果filter参数值为None,list参数中所有为假的元 素都将被

Python基础篇【第2篇】: Python内置函数--map/reduce/filter/sorted

Python内置函数 lambda lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位置使用lambda表达式.在开发者想要使用一个简单函数作为参数或者返回值时,使用lambda表达式是很方便的.总结:处理简单逻辑,自动返回结果 语法格式: lambda parameters: expression 就相当于 def fun(args) return expression 并且lam

python内置函数map/reduce/filter

python有几个内置的函数很有意 思:map/filter/reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是python列表方法的三架马车. filter() 函数:filter 函数的功能相当于过滤器.调用一个布尔函数bool_func来迭代遍历每个seq中的元素:返回一个使bool_seq返回值为true的元素的序列. >>>a=[1,2,3,4,5,6,7]>>>b=filter(lambda x:

Python笔记第3章,模块和模块的常用方法,函数式编程yield,三元运算Lambda表达式,内置涵数,常用模块

<--目录--> 模块和模块的常用方法 函数式编程 yield 三元运算 Lambda表达式 内置涵数 常用模块 [模块和模块的常用方法]至关重要的__init__.py    #包一定要有这个__init__.py文件,他才是包,这样才能通过form 包名 import 模块名(.py文件名)来去引用这个包的某个模块的某个函数功能 判断是否为主文件:__name__ if __name__ == '__main__' 当前文件路径: __file__ 当前文件描述: __doc__ 1)if

内置函数--map,filter,reduce

一.map class map(object): """ map(func, *iterables) --> map object Make an iterator that computes the function using arguments from each of the iterables. Stops when the shortest iterable is exhausted. """ def __getattribut

内置函数-map、filter、zip

### zip ### --- 就是把 list ,合并到一起 a = ['a','b','c'] b = [1,2,3] 得到:a 1,b 2,c 3 # for a,b in zip(a,b):# print(a,b) print(list(zip(a,b))) ----- 将一维数组变成 二维:以长度小的数组为准 ### map ### ----- 循环调用函数 def my(num): return str(num) lis = [1,2,3,45,6,7,8] #new_list =

Python经常使用内置函数介绍【filter,map,reduce,apply,zip】

Python是一门非常简洁,非常优雅的语言,其非常多内置函数结合起来使用,能够使用非常少的代码来实现非常多复杂的功能,假设相同的功能要让C/C++/Java来实现的话,可能会头大,事实上Python是将复杂的数据结构隐藏在内置函数中,用C语言来实现,所以仅仅要写出自己的业务逻辑Python会自己主动得出你想要的结果.这方面的内置函数主要有,filter,map,reduce,apply,结合匿名函数,列表解析一起使用,功能更加强大.使用内置函数最显而易见的优点是: 1. 速度快,使用内置函数,比

内置函数-map

1 In [15]: list(range(5)) 2 Out[15]: [0, 1, 2, 3, 4] 3 4 In [16]: list(map(str,range(5))) 5 Out[16]: ['0', '1', '2', '3', '4'] 6 7 In [17]: list(map(lambda x,y:x+y,range(5),range(5,10))) 8 Out[17]: [5, 7, 9, 11, 13] 内置函数map()把一个函数func依次映射到序列或迭代器对象的每一