用python计算海里数代码,
海象算子是在PEP 572中提出的,直到3.8版本发布。
它最初的英文名字是Assignment Expressions,翻译过来就是赋值表达式,但现在它更普遍的名字是walrus operator,因为它看起来非常像海象。
00-1010可能有些朋友对这个新功能比较陌生,那么这个海象算子有什么用呢?
Golang中的条件语句可以在if中获得变量后直接判断变量,可以为你节省一行代码。
导入“fmt”
funcmain(){
ifage:=2018岁
Fmt。Println(“已经成年”)
}
}在Python 3.8之前,Python必须这样写。
年龄=20岁
ifage18:
Print(已经长大)但是有了walrus运算符,你就可以和Golang一样了(如果你没学过Golang,那么这里注意,Golang中的:=叫做短变量声明,意思是声明和初始化,和Python中的3360=不是一个概念)
如果(年龄:=20)18:
当在使用walrus操作符之前使用while循环读取文件时,您可能会这样写。
file=open(demo.txt , r )
whileTrue:
line=file.readline()
ifnotline:
破裂
Print(line.strip())但是使用walrus operator,您可以做到这一点
file=open(demo.txt , r )
while(line :=file . readline()):
Print(line.strip())用它来代替之前的while cycle编写更神奇。
例如,要实现一个要求命令行输入密码并交互检查密码的代码,您可以这样写。
whileTrue:
p=输入(输入密码: )
ifp==您的密码 :
有了海象算子,这样写就比较舒服了。
while(p :=input( enterthepassword : )!=youpassword:
continue
1. 第一个用法:if/else
系列的每一篇文章几乎都能看到演绎的身影,这一篇依然如此。在编码的过程中,我非常喜欢使用派生。在…里
简单的应用场景下,它简洁且不失高效。
如下这段代码中,我会使用列表推导式得出所有会员中过于肥胖的人的 bmi 指数
members=[输出如下{"name":"小五","age":23,"height":1.75,"weight":72},
{"name":"小李","age":17,"height":1.72,"weight":63},
{"name":"小陈","age":20,"height":1.78,"weight":82},
]
count=0
defget_bmi(info):
globalcount
count+=1
print(f"执行了{count}次")
height=info["height"]
weight=info["weight"]
returnweight/(height**2)
#查出所有会员中过于肥胖的人的bmi指数
fat_bmis=[get_bmi(m)forminmembersifget_bmi(m)>24]
print(fat_bmis)
执行了1次可以看到,会员数只有 3 个,但是 get_bmi 函数却执行了 4 次,原因是在判断时执行了 3 次,而在构造新的列表时又重复执行了一遍。执行了2次
执行了3次
执行了4次
[25.88057063502083]
如果所有会员都是过于肥胖的,那最终将执行 6 次,这种在大量的数据下是比较浪费性能的,因此对于这种结构,我通常会使用传统的for 循环 + if 判断。
fat_bmis=[]在有了海象运算符之后,你就可以不用在这种场景下做出妥协。#查出所有会员中过于肥胖的人的bmi指数
forminmembers:
bmi=get_bmi(m)
ifbmi>24:
fat_bmis.append(bmi)
#查出所有会员中过于肥胖的人的bmi指数最终从输出结果可以看出,只执行了 3 次fat_bmis=[bmiforminmembersif(bmi:=get_bmi(m))>24]
执行了1次这里仅介绍了列表推导式,但在字典推导式和集合推导式中同样适用。不再演示。执行了2次
执行了3次
[25.88057063502083]
海象运算符,是一个新奇的特性,有不少人觉得这样这种特性会破坏代码的可读性。确实在一个新鲜事物刚出来时是会这样,但我相信经过时间的沉淀后,越来越多的人使用它并享受它带来的便利时,这种争议也会慢慢消失在历史的长河中。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。