概述
目录
- 前言
- 关键技巧
- for in if 语句
- lambda 匿名函数
- 三元操作符 a if exp else b
- 海象运算符骚操作
- 其他技巧
- 长赋值语句、原地交换、链比较
- f-Strings 格式化字符串
前言
在学习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}")
花括号{}中间可以是任意任意表达式、变量等
最后
以上就是香蕉钻石为你收集整理的Python一行代码奇技淫巧狂热者(Tricky or Fucky) | 海象运算符、lambda、for in if、三元操作等前言关键技巧其他技巧的全部内容,希望文章能够帮你解决Python一行代码奇技淫巧狂热者(Tricky or Fucky) | 海象运算符、lambda、for in if、三元操作等前言关键技巧其他技巧所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复