Python一行代码奇技淫巧狂热者(Tricky or Fucky) | 海象运算符、lambda、for in if、三元操作等

前言

在这里插入图片描述
在学习python这门编程语言的过程中,

经常发现很多很有趣的一行代码解决各种问题,

使得代码结构紧凑,可读性不强但zhuangbility性极强。

为了完成一行代码统治大业,必须习得以下技巧:

关键技巧

for in if 语句

一种简洁的构建List的方法,从for给定的List中选择出满足if条件的元素组成新的List,其中if是可以省略的(省略就是普通的遍历语句)。

l = [0,1,2,3]
print(list(x for x in l if x%2))
# 输出奇数[1, 3]

需要注意的是返回的是一个generator迭代器,

一般要转为list 如:[ for in if ]

或者某些函数支持 如:sum、max可直接使用

lambda 匿名函数

python允许用lambda关键字创造匿名函数。匿名是不需要以标准的方式来声明,比如说使用 def 语句。(除非赋值给一个局部变量,这样的对象也不会在任何的名字空间内创建名字,上面的例子中会创建名字。)

def add(a,b):
	return a+b

等价于:

add = lambda a,b : a+b

lambda多个返回值:

f = lambda a,b:(a+b,a-b)
print(f(1,2))
#输出结果:(3,-1)

三元操作符 a if exp else b

等价于C、C++、Java中的三目运算符

min = lambda a,b:a if a<b else b 
min = a<b ? a : b

海象运算符骚操作

有以下一段代码

if 1!=2:
	t = True
else:
	i+=1
	t = False
	

无敌简化一行:

t = True if 1!=2 else (i!=(i:=i+1) and False

因为 i!=(i:=i+1) 恒为True
else 后面巧妙的多执行了一句i+=1操作

其他技巧

长赋值语句、原地交换、链比较

得益于python高效开发的特性

a,b,c = 1,2,3
a,b = b,a        #交换两数
a<b<c        #等价于 a<b and b<c

f-Strings 格式化字符串

f-string在形式上是以 f 或 F 修饰符引领的字符串(f’xxx’ 或 F’xxx’),以大括号 {} 标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。

print(f"1+1应该是等于{1+1}")

花括号{}中间可以是任意任意表达式、变量等

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赛文X

觉得不错就打赏下呗mua~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值