那些你不知道的python技巧(一)

代码简洁是python的有点之一,但是很多python技巧可以让简洁的代码看起来更优雅!

废话不多说,先来五个python特技。

目录

一、Lambda函数

二、列表推导式

三、三元运算符

四、链状比较操作符

五、正则表达式替换


一、Lambda函数

Lambda函数又叫做匿名函数,因为它不需要使用def func() 的形式进行定义,而是直接使用一行代码即可搞定。

result = lambda x: x**2
print(result)  # 4

result = lambda x, y: x * y + 1
print(result(2, 5))  # 11

result = lambda x, y, z: x * y / z
print(result(3, 6, 2))  # 9.0

二、列表推导式

我们经常会用for循环来处理各种迭代内容,但是有时候只是简单的做个判断或者计算,不需要什么复杂的逻辑,这时候我们就可以使用列表推导式了,只需要一行即可解决问题。

result = [i for i in range(5)]
print(result) # [0, 1, 2, 3, 4]

result = [i**2 for i in range(5)]
print(result) # [0, 1, 4, 9, 16]

result = [i**2 for i in range(5) if i < 3]
print(result)  # [0, 1, 4]

如果只是可以少写几行代码得话用列表推导式好像没有什么大用处,其实使用列表推导式的计算速度比for循环快1倍以上。

import time

start = time.clock()
result = [i for i in range(5000000)]
end = time.clock()
print(end-start)  # 0.2553341

start = time.clock()
res = []
for i in range(5000000):
    res.append(i)
end = time.clock()
print(end-start)  # 0.6489809

同理,字典表达式、集合表达式都可以使用上述功能,差别体现在各自不同的数据结构上

 

三、三元运算符

if判断也是常用的逻辑功能之一,最简单的判断至少要四行才能写完,然而三元操作符帮你解决了代码冗杂的麻烦,可以更优雅的表示。

result = 3 if 1 < 2 else 4
print(result)  # 3

result = 3 if 1 > 2 else 4
print(result)  # 4

四、链状比较操作符

比较大小或真假的时候会遇到多个同时进行比较的时候,我们可以通过and进行连接,但是总感觉哪里不好呢,这时我们可以使用它,多少个都可以比较。

num1 = 10
num2 = 50

result = 1 < num1 < 20 < num2
print(result)  # True

result = 1 < num1 < 20 < num2 < 30
print(result)  # False

result = 1 <= num1 < 20 > num2
print(result)  # False

也可以结合三元操作符。

num1 = 10
num2 = 50

result = "真" if 1 < num1 < 20 < num1 else "假"
print(result)  # 真

result = "真" if 1 <= num1 < 20 > num2 else "假"
print(result)  # 假

五、正则表达式替换

当我们对某一个字符串中的某些内容替换的时候,最先想到的是replace。

但是!

如果替换的内容很多而且长得有些相似又不太一样呢?

如果替换的内容有多个呢?

当然,用replace也可以解决,那就是写好多个replace。这个方法就有些low了。

正则表达式完美的解决了我们的问题!

import re
# 需求:替换掉顿号、字符、和括号中内容
string = "a正式一个有个性的字符串、b字符串、c字符串。abc,字符创、(自付出)、zifuchuan"
result = re.sub(r"、|字符|(.*)", "", string)
print(result)  # a正式一个有个性的串b串c串。abc,创zifuchuan

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值