pythonifelse表达式_Python if else简洁写法,列表推导式,三目运算符写法

 2023-09-13 阅读 29 评论 0

摘要:1. 当只有 if 时,列表生成式构造为 [最终表达式 - (范围选择 - 范围过滤)] python format函数。>>> [num ** 2 for num in range(10) if num % 2 == 0] [0, 4, 16, 36, 64] python else。如果 if 和 for 的位置调换,则会报错。 >>> [

1. 当只有 if 时,列表生成式构造为 [最终表达式 - (范围选择 - 范围过滤)]

python format函数。>>> [num ** 2 for num in range(10) if num % 2 == 0]

[0, 4, 16, 36, 64]

python else。如果 if 和 for 的位置调换,则会报错。

>>> [num ** 2 if num % 2 == 0 for num in range(10)]

python编程、File "", line 1

[num ** 2 if num % 2 == 0 for num in range(10)]

^

SyntaxError: invalid syntax

2. 当同时有 if 和 else 时,列表生成式构造为 [最终表达式 - 条件分支判断 - 范围选择]

>>> [num ** 2 if num % 2 == 0 else 0 for num in range(10)]

[0, 0, 4, 0, 16, 0, 36, 0, 64, 0]

如何 if 和 for 的位置调换,则会报错。

>>> [num **2 for num in range(10) if num % 2 == 0 else 0]

File "", line 1

[num **2 for num in range(10) if num % 2 == 0 else 0]

^

SyntaxError: invalid syntax

官方文档并没有提及到这个。我就说一下我的理解方法。

1,python解释器看到列表生成式会先找关键字 for,for 后面的部分是为了筛选需要显示的数字,for 前面的表达式则是对这些数字进行进一步加工。

2,当只有 if 而没有 else 时,此时迭代器 range 里面的元素会被筛选,只有偶数才会进行下一步操作;筛选好之后,再进行平方操作。这里if的作用是为了筛选。

3, 当同时有 if 和 else 时,此时迭代器中的所有元素都将会在下一步被处理,然后就是偶数的进行平方,奇数的显示为0。这里 if 和 else 的作用则是为了进行不同条件下的处理。

因写多了判断语句,看着短短的代码却占据来好几行,于是便搜下if-else简洁的写法,结果也是发现新大陆

4种:

第1种:__就是普通写法

copycode.gif

a, b, c = 1, 2, 3

if a>b:

c = a

else:

c = b

copycode.gif

第二种:一行表达式,为真时放if前

c = a if a>b else b

第三种:二维列表,利用大小判断的0,1当作索引

c= [b, a][a > b]

第四种:传说中的黑客,利用逻辑运算符进行操作,都是最简单的东西,却发挥无限能量啊

c = (a>b and [a] or [b])[0]

# 改编版

c = (a>b and a or b)

第四种最有意思了,

利用and 的特点,若and前位置为假则直接判断为假。

利用 or的特点,若or前位置为真则判断为真。

copycode.gif

# 从前往后找,and找假,or找真

# 前真返后,

print(111 and 222) # 222

# 前假返前

print(0 and 333) #0

# 若x真【x】, x假,y真【y】,xy假【y】,只有前真返回前

print(111 or 222) #111

print(0 or 222) #222

print('' or 0) # 0

copycode.gif

对于c = (a>b and a or b)而言,

若(a>b and a)

真:a >b and a,

则a > b 为真

假:b,

则 a> b为假

补充:对于and的理解

copycode.gif

id_ = '12345'

# 判断长度为5或者为8

if len(id_) == 5 or len(id_) == 8:

print(id_, '------')

# 相反的表达为非5且非8

if len(id_) != 5 and len(id_) != 8:

print(id_, '+++++++')

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/49876.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息