赞
踩
匿名函数语法形式:
lambda [arg1,arg2,arg3,argn]:expression
注解:
lambda 关键字
argi 函数参数
expression 程序逻辑,即函数要返回值的表达式
该表达式不能包含其他语句,可以返回带括号的(元组),同时允许在表达式中调用其它函数。
>>> c = lambda x,y:x * x + y * y # 不能有for, if, while的循环或者判断语句
>>> c(4,5)
Out[93]: 41
并行迭代:简单来说就是程序可以同时迭代多个序列
ex:
>>>name = ('tang', 'liu', 'mei', 'yejieyi')
>>>old = ('12', '24', '23', '25')
>>>for i in range(len(name)):
print(name[i],'is ',old[i],'years old')
tang is 12 years old
liu is 24 years old
mei is 23 years old
yejieyi is 25 years old
>>>for each in zip(name,old): # 从字面理解,就是把二个对象压缩成一个到一个对象
print(each)
('tang', '12')
('liu', '24')
('mei', '23')
('yejieyi', '25')
>>>for a,b in zip(name, old):
print(a,'is',b,'years old')
tang is 12 years old
liu is 24 years old
mei is 23 years old
yejieyi is 25 years old
问题:列表推导式是什么?它的优点是什么?
且看栗子:计算出1~9间的整数的平方’
常规方法1
# normal mehod 1
>>>def sqrt(x):
for i in range(1,x+1):
print(i*i)
sqrt(7)
1
4
9
16
25
36
49
# normal method 2:
>>> a = []
>>> for i in range(1, 8):
a.append(i*i)
>>> a
Out[112]: [1, 4, 9, 16, 25, 36, 49]
# 列表推导式
[x*x for x in range(1,8)] # 这里不仅可以用for,也可以用if,while等循环或者判断语句
Out[115]: [1, 4, 9, 16, 25, 36, 49]
>>>[ x for x in range(1,8) if x%2 == 0 ] # 'for' and 'if' sentence used together
[2 4 6]
In [128]: a ={x:y for x,y in zip(range(1,7),'abderfg')} #与zip的连用,注意x与y之间的逗号,和字典x与y之间的冒号,
a
Out[129]: {1: 'a', 2: 'b', 3: 'd', 4: 'e', 5: 'r', 6: 'f'}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。