python - python优码优化之代码简化

目录

1.多变量赋值

2.变量交换值

3.链状比较操作符

4.三元操作符进行条件赋值

5.列表推导式

6.善用else 或 finally 语句

7.善用匿名函数lambda


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]

猜你喜欢

转载自blog.csdn.net/helunqu2017/article/details/114380643