目录
1.多变量赋值
a = b = c = 1
a, b, c = 1, 2, "john"
a,b,c = function1(), function2(), function3()
2.变量交换值
a,b=b,a
3.链状比较操作符
result= 1< n< 20
4.三元操作符进行条件赋值
b = 2 if a > 2 else 1
x = 10 if (y == 9) else 20
5.列表推导式
num = [1,2,3,4,5,6,7,8, 9]
new_num = [i*2 for i in num if i%2==0]
6.善用else 或 finally 语句
for ... else ... 当for循环进行完毕时(非break 终止循环),执行else 代码块
while ... else .... 只有当while 的循环条件为假而退出时(非break 终止while 循环),执行else 代码块
try ... except ... else 如果没有异常执行else代码
try...except...finally 论有没有错误 finally语句都会执行
7.善用匿名函数lambda
(1)多参数
f = lambda a,b,c: a+b+c #等同于返回 a+b+c
a= f(1,2,3) #结果a=6
(2)使用默认值
c = lambda x,y=2: x+y
(3)*z返回的是一个元组
a = lambda *z:z
a('Testing1','Testing2')
结果:('Testing1', 'Testing2')
(4)**arg返回的是一个字典
c = lambda **arg: arg
(5)直接后面传递实参数
(lambda x,y: x if x> y else y)(101,102) #返回102
(lambda x:x**2)(3) #返回9
(6)lambda返回的值,结合map,filter,reduce使用
filter(lambda x:x%3==0,[1,2,3,4,5,6])
squares = map(lambda x:x**2,range(5)
a=[('b',3),('a',2),('d',4),('c',1)]
sorted(a,key=lambda x:x[0]) #按照第一个元素排序
与reduce函数结合使用
#!/usr/bin/python
from functools import reduce
def add(x, y) : # 两数相加
return x + y
sum1 = reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+5
sum2 = reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数
(7)嵌套使用将lambda函数嵌套到普通函数中,lambda函数本身做为return的值
def increment(n):
return lambda x:x+n
f=increment(4)
f(2)
6
(8)字符串联合,有默认值,也可以用x=(lambda...)这种格式
x=(lambda x='Boo',y='Too',z='Z00':x+y+z)
print(x('Foo'))
'FooTooZoo'
(9)判断字符串是否以某个字母开头有
Names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
B_Name= filter(lambda x: x.startswith('B'),Names)
print(B_Name)
['Bob', 'Barbara']
(10)求两个列表元素的和
a = [1,2,3,4]
b = [5,6,7,8]
print(list(map(lambda x,y:x+y, a,b)))
[6,8,10,12]
(11)求字符串每个单词的长度
sentence = "Welcome To Beijing!"
words = sentence.split()
lengths = map(lambda x:len(x),words)
print(list(lengths))
[7,2,8]