首页 > 编程语言 >Python语法糖之赋值表达式

Python语法糖之赋值表达式

时间:2022-11-11 22:57:42浏览次数:52  
标签:Python 0.5 重复 print total 表达式 赋值

目录
本博客主要参考为北京大学陈斌老师的下一站Python

image

概述

赋值表达式是python3.8+的新特性。如果你想要使用它,请注明所需python>=3.8.

语法(海象运算符)

  • <名字> := <表达式>
  • 语义:计算表达式的值,并且用名字来引用它
  • 与赋值语句的区别:这是个表达式,可以参与计算(必须带圆括号),附送一个变量
b = (a := 7) * 33
print(a, b)

为什么需要这个?

  • 表达式的一部分,尤其是函数调用,要被多处引用;
  • 限于当前语法,需要重复写多处;
  • 不光需要多处同步维护代码;
  • 还会引起重复计算。

避免重复写代码

# 《重复写代码》
# 例子:把一个字符串中A后面的数字求和
s = "!@A1k222A6_78A8"
total, i = 0, -1
i = s.find("A", i + 1)  # 找第一个A
while i >= 0:
    total += int(s[i + 1])
    i = s.find("A", i + 1)  # 找下一个A
print(total)

赋值表达式写法

# 《避免重复写代码》
s = "!@A1k222A6_78A8"
total, i = 0, -1
while (i := s.find("A", i + 1)) >= 0:
    total += int(s[i + 1])
print(total)

例子:连续输入命令行

while (exp := input("Exp:")).lower() != "bye":
    print(exp, "=", eval(exp))
else:
    print("Good Bye!")

避免重复计算

# 《重复计算》
def f(n):  # 假设是一个耗时的函数
    return sum([1/(i * i) for i in range(1, n + 1)])

# 输出f(i)+f(i)**0.5
for i in range(1, 10):
    print(i, f(i) + f(i)**0.5)

改进版为

# 当然可以改进一下
# 输出f(i)+f(i)**0.5
for i in range(1, 10):
    fi = f(i)
    print(i, fi + fi**0.5)

赋值表达式写法

# 避免重复计算
# 输出f(i)+f(i)**0.5
for i in range(1, 10):
    print(i, (fi := f(i)) + fi**0.5)

在推导式中应用

# 输出字符串列表中所有长度大于3的字符串及其长度
slist = ["Hello", "abc", "Python", "as", "world"]
print([(s, l) for s in slist if (l := len(s)) > 3])

例子:字典倒查

# 找到指定值对应的key
adic = {"Tom":34, "Yuki":55, "Bob":233}
v = 55
if any(adic[(found := k)] == v for k in adic):  # any函数+生成器推导式
    print("Found:", found)
else:
    print("Not Found!")

标签:Python,0.5,重复,print,total,表达式,赋值
From: https://www.cnblogs.com/coco02/p/16882303.html

相关文章

  • Python第十章实验报告
    一、实验对象:《零基础学Python》6道实例和2道实战二、实验环境:IDLEShell3.9.7三、实验目的:学习如何在Python中进行文件和目录的相关操作四、实验过程:实例01创建并......
  • 献芹奏曝-Python面试题-算法-DFS&BFS
    上一篇:献芹奏曝-Python面试题    开篇的话:本文目的是收集和归纳力扣上的算法题,希望用python语言,竭我所能做到思路最清奇、代码最简洁、方法最广泛、性能最高效,了解......
  • Python语法糖之match-case
    目录概述基本语法和语义example1example2进阶用法如果在case写变量名只是为了不写if语句么?本博客主要参考为北京大学陈斌老师的下一站Python概述match-case是python3.1......
  • OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src
    原先一直以为数据集路径错误,调了半天也没用,后来打印图片列表,发现一个隐藏文件在终端运行 ls-a也出现了这个隐藏文件  删除 rm-rf.ipynb_checkpoints之后成功......
  • python中的运算符
    #1.算术运算符print('1.算术运算符')print('+1+2+3=',1+2+3)print('-10-5-1=',10-5-1)print('*2*2*3=',2*2*3)print('/7/2=',7/2)#除法,操......
  • Python获取IP地址
    Python获取IP地址一些情况下,我们需要通过Python获取电脑当前的IP地址,并执行一些操作(比如上传到数据库),则可以执行下面的命令:1.获取外网IP地址importrequestsprint(req......
  • 【正则】964- 正则表达式的括号如何使用?
    最近再一次重温老姚大佬的《JavaScript正则表达式迷你书》,并将核心知识点整理一遍,方便复习。原书写得非常棒,建议看下原书啦。  地址:https://github.com/qdlaoyao/js-re......
  • java中的复合赋值运算符
    本文主要阐明复合赋值运算符即i=i+1.2==>i+=1.2; inti=1;i+=1.2;System.out.println(i);//i==2注意:复合赋值运算符会进行类型转换,具体操作顺序如......
  • 数据降噪处理--python实现
    原文链接:https://blog.csdn.net/qq_38342510/article/details/121227880一、均值滤波1)算法思想 给定均值滤波窗口长度,对窗口内数据求均值,作为窗口中心点的数据的值,之后......
  • python 修改ps背景颜色
    需要安装photoshop-python-api 1"""Changethecolorofthebackgroundandforeground."""2#Importlocalmodules3fromphotoshopimportSession4......