代码简洁是python的有点之一,但是很多python技巧可以让简洁的代码看起来更优雅!
废话不多说,先来五个python特技。
目录
一、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