一、三元运算(式)
对于一般简单的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