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]

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值