首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python精讲 | 条件赋值和and-or技巧

而如果条件为True,它会进行and运算返回值1,再触发or短路求值返回值1。 于是,就变相实现了一个单行的if-else结构。 其实在很多语言中,都有现成的类似语法,称作 条件赋值,常常是以 ?...条件 ? 值1 : 值2 如果问号前条件为真,则返回问号后的值,否则返回冒号的值。...Python中也有这种语法,同样以if-else作为关键字,但写法上略有不同: 值1 if 条件 else 值2 在非常非常早期的Python版本中,并不支持这种单行的if-else语法,所以会有人用...但值1本身也可能是个空值,也就是逻辑上的False,那么就不会触发or的短路求值,这个条件赋值的逻辑也就不成立了。 当然,如果想补上这个漏洞也不是不行,只需要保证值1一定为非空非0值就可以。...= 4 and [''] or ['\n'])[0] 或者,我们也可以这么写 D += ('', '\n')[i % 5 == 4] 把两个值作为元组,把条件作为索引,也可以实现条件赋值 你能看出这么写是什么意思吗

24610

python——赋值

赋值 赋值操作,本来没有什么细节。但是python现在的赋值操作也是花里胡哨的,跟C++快一样烦人了,你不用这种方式,总有人用,因此还是有必要学一下。...赋值成功。 这种操作是由于python会在赋值的时候发生解包操作,这个操作能够在赋值运算符左右两侧的序列长度是相等的情况下进行。...的目的有些背道而驰,可能这样做会显得python比较高大上,而不是那么简单。...python3中的扩展序列解包 python3中对于那种将序列划分为“前面指定的一部分和剩余的部分”这种常见的编码模式提供了扩展序列解包方式。...例如: x *= 2 x /= 2 x **= 100 C/C++程序员注意,python没有支持x++(++x),x–(--x)这种自增或者自减方式。 增量赋值和共享引用 以+为例,进行说明。

2.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

Python——赋值语句

,通用性 a,b,c = [1,2,3] a,*b = 'spam' 扩展的序列解包(Python3.0) spam = ham = 'lunch' 多目标赋值运算 spams += 42 增强赋值运算...因为语句执行时,Python会建立临时的元组,来存储右侧变量原始的值,分解赋值语句也是一种交换两变量的值,却不需要自行创建临时变量的方式:右侧的元组会自动记住先前的变量的值。...事实上,Python中原始的元组和列表赋值语句形式,最后已经被通用化,以接受右侧可以是任何类型的序列,只要长度相等即可。...可以赋值嵌套序列,而Python会根据其情况分解其组成部分,就像预期的一样: >>> string = 'SPAM' >>> (a,b),c=string[:2],string[2:] >>> a,...b,c ('S', 'P', 'AM') 序列解包赋值语句也会产生另一种Python常见用法,也就是赋值一系列整数给一组变量。

1.8K20

springEL表达式_赋值表达式的条件

类相关表达式 ① 类类型 ② 类实例 ③ instanceof ④ 变量定义及引用 ⑤ 赋值 ⑥ 自定义函数 ⑦ 对象属性获取及安全导航 ⑧ 对象方法调用 ⑨ Bean引用 3....SpEL支持给自定义变量赋值,也允许给根对象赋值,直接使用#variableName=value即可赋值。...使用#variable=value给自定义变量赋值 使用#root=value给根对象赋值 使用#this=value给当前上下文对象赋值 public static void main(String...前边的表达式为null时抛出空指针异常,而是返回null;修改对象属性值则可以通过赋值表达式或Expression接口的setValue方法修改。...SpEL根据原集合通过条件表达式选择出满足条件的元素并构造为新的集合。数组和字典类似。 SpEL使用“(list|map).?

2.5K20

【说站】python赋值运算符支持哪些赋值

python赋值运算符支持哪些赋值 1、赋值运算符支持链式赋值。如果想让多个变量同时引用同一个对象,可以使用链式赋值。...a = b = c = 18 print(a)    # 18 print(b)    # 18 print(c)    # 18 2、赋值运算符支持参数赋值,可在赋值运算符左侧添加其他运算符,实现参数赋值...参数赋值可以使代码更加简洁,而且可读性更强。...例如:+=、-=、*=、/=、%=     a += b 相当于:a = a + b     a -= b 相当于:a = a - b 以上就是python赋值运算符支持的赋值类型,希望对大家有所帮助。...更多Python学习指路:python基础教程 本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。 收藏 | 0点赞 | 0打赏

58520

Python:序列的增量赋值

增量赋值运算符有 += 和 *=。+= 背后的特殊方法是 __iadd__,如果一个类没有实现 __iadd__ 方法,Python 会退一步调用 __add__ 方法。...1298277978824 id(c) = 1298277978696 id(c) = 1298277978632 id(d) = 1298277972872 id(d) = 1298277136616 了解了序列的增量赋值...,我们来看 Leonardo Rochael 在 2013 年的 Python 巴西会议上提到的谜题: t = (1, 2, [30, 40]) t[2] += [50, 60] A. t 变成 (1,...因为 tuple 不支持对它的元素赋值,所以会抛出 TypeError 异常 C. 以上两个都不是 D. A 和 B 都是对的 估计很多人会跟我一样选 B,但其实答案是 D。...3、增量赋值不是一个原子操作,我们刚才也看到了,它虽然抛出了异常,但 t 的值还是改变了。

1.2K20

python list拷贝赋值问题

参考链接: Python list append() 在python中,用等号或者append方法进行list的赋值,实际上是将原list的引用赋给了新的变量,在后续使用append方法改变这两个list...总结一下: 1.用等号(或appne)将list赋值:a=b(a.append(b)),a和b互为引用关系,id(a)==id(b), id(a[0])==id(b[0])。...2.用copy将list赋值:a=b.copy(),则id(a)!=id(b), id(a[0])==id(b[0])。...5.也就是说,当两个变量的某一层次是引用关系时,使用append、pop修改当前层级会同时修改另一变量,使用直接赋值修改当前层级不会同时修改另一变量。...当两个变量的某一层次是引用关系时(id(a)==id(b)),使用赋值修改下一层级的值(a[0]=x),会同时修改另一变量。 6.用深拷贝a=b.deepcopy()肯定没错。

1K20

Python - if 条件控制

条件进行判断: 如果条件为真,执行“条件为真的分支” 如果条件为假,执行“条件为假的分支” if ... else ......语句 Python 提供了 if 条件控制语句用于选择执行流程 if 条件条件为真的分支 else: 条件为假的分支 可以选择不带 else 分支 if 条件条件为真的分支...对多个条件进行判断: 如果条件 1 为真,则执行代码块 1 如果条件 2 为真,则执行代码块 2 如果条件 3 为真,则执行代码块 3 如果以上条件都不满足,则执行代码块 4 if ... elif ....语句 if 条件 1: 代码块 1 elif 条件 2: 代码块 2 elif 条件 3: 代码块 3 else: 代码块 4 不带 else 分支 if 条件 1:...程序首先判断条件 1 是否为真 如果条件 1 为真,则判断条件 2 是否为真 条件 1 为真并且条件 2 为真,执行代码块 1 条件 1 为真并且条件 2 为假,执行代码块 2 如果条件 1 为假,则判断条件

91930

Python 动态赋值的陷阱

花下猫语:在上一篇文章《Python与家国天下》的第三节中,我借 Python 猫之口介绍了关于局部作用域的变量解析问题,还引入了抽象语法树的隐藏内容,最后触及了 CPython 的底层实现原理的边界...) ---- 在工作中, 有时候会遇到一种情况: 动态地进行变量赋值 , 不管是局部变量还是全局变量, 在我们绞尽脑汁的时候, Python已经为我们解决了这个问题....Python的命名空间通过一种字典的形式来体现, 而具体到函数也就是locals() 和 globals(), 分别对应着局部命名空间和全局命名空间....于是, 我们也就能通过这些方法去实现我们"动态赋值"的需求..../读取 和 通过locals()赋值/读取 本质是很大不同的.

1.4K30

Python IF 条件判断

if 语句用于控制程序的执行,基本形式为: if 判断条件: 执行语句…… else: 执行语句…… 其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围...else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句: name = 'Python' if name == 'Python': # 判断变量否为'Python'...print("欢迎学习Python") # 并输出欢迎信息 else: print(name) # 条件不成立时输出变量名称 if 语句的判断条件可以用...print("不错") elif num >= 60: print("及格") else: print("不及格") 如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功...;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。

1.8K20
领券