python3三元运算符,Python三元
首先,三元表达式
三元运算是简单条件语句的缩写。
# if条件语句
如果x f:
打印(x)
否则:
打印(y)
#该条件适用于左侧,但不适用于右侧。
X x x y else y #三元表达式
Python的三元运算格式如下:
如果x,结果=值1
#如果条件成立,则将“值1”赋给结果变量,否则,将“值2”赋给结果变量。
二、列表分析
列表解析:使用三元表达式将结果写入列表,这就是列表解析。
使用列表生成,您可以编写非常简洁的代码。
如果你想生成[1x1,2x2,3x3,10x10]?第一种方法是循环:
#方法1
L=[]
对于范围(1,11)中的x:
l .追加(x * x)
#结果L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
#方法2:列表解析
[范围(1,11)中x的x * x
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
写列表生成公式的时候,可以把要生成的元素x * x放在前面,后面是for循环,这样就可以创建一个列表,非常有用。多写几次,很快就熟悉这个语法了。
If判断也可以加在for循环之后:
[x * x,如果x % 2==0,则x在范围(1,11)内]
[4, 16, 36, 64, 100]
您也可以使用两层循环,这可以生成一个完整的排列:
[‘ABC’中的m代表m,而‘XYZ’中的n代表n]
[AX , AY , AZ , BX , BY , BZ , CX , CY , CZ]
很少使用三层或更多层的循环。
For循环也可以同时使用两个甚至更多的变量。比如dict的items()可以同时迭代key和值:
d={x: A , y: B , z: C}for k,v ind.items():print(k,=,v)
y=B
x=A
z=C
:
因此,列表生成器也可以使用两个变量来生成列表:
d={x: A , y: B , z: C}
[k = v for k,v ind.items()]
[y=B , x=A , z=C]
列表解析实例
#遍历
s= hello l=[]对于i ins:
res=i.upper()
附加打印
#####################################
#列表解析:
s= hello RES=[I . upper()for I ins]
打印(分辨率)
要求:列出从1到10的所有数字的平方# # # # # # # # # # # # # # # # # # # # #
1.常用方法:对于(1,11)范围内的I,L=[]:
.l .追加(i**2)
.printL
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]####################################################
2.列表解析L=[I * * 2 for I in range (1,11)] printl
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
要求:列出1到10中大于或等于4的数字的平方# # # # # # # # # # # # # # # # # # #
1.常用方法:对于(1,11)范围内的I,L=[]:
.如果i=4:
.l .追加(i**2)
.printL
[16, 25, 36, 49, 64, 81, 100]####################################################
2.列表解析L=[I * * 2 for I in range (1,11) if I=4] printl
[16, 25, 36, 49, 64, 81, 100]
要求:列出所有文件# # # # # # # # # # # # # # # # # # # # # # # # #
1.OS.listdir (/var/log )中文件的通用方法imports file=[]:
.if file.endswith(。日志’):
.file.append(文件)
.打印文件
[anaconda.ifcfg.log , Xorg.0.log , anaconda.storage.log , Xorg.9.log , yum.log , anaconda.log , dracut.log , pm-powersave.log , anaconda.yum.log , wpa_supplicant.log , boot.log , spice-vdagent.log , anaconda . program . log ]# # # # # # # # # # # # # # # # # # # # # # # # # # #
2.列表解析imports file=[file for file in OS . listdir(/var/log )if file . ends with(。log)] printfile
[anaconda.ifcfg.log , Xorg.0.log , anaconda.storage.log , Xorg.9.log , yum.log , anaconda.log , dracut.log , pm-powersave.log , anaconda.yum.log , wpa_supplicant.log , boot.log , spice-vdagent.log , anaconda.program.log]
总结
使用列表生成公式,可以快速生成一个列表,可以从一个列表推导出另一个列表,但是代码非常简洁。
三、生成器表达式
egg _ list=[ egg % s % I for I in range(10)]#列表解析
#############################################
Lao muji=( egg % s % I for I in range(10))#生成器表达式
Print(老木基)print (next(老木基))# Next本质上是调用__next__
打印(劳木吉。__下一个_ _())打印(下一个(老木基))
总结:
1.生成器表达式是通过在列表解析中用()替换[]获得的。
2.列表解析和生成器表达式都是方便的编程方法,但是生成器表达式节省更多的内存。
3.Python不仅使用了迭代器协议,还使得for循环更具通用性。大多数内置函数也使用迭代器协议来访问对象。
比如sum函数是Python的内置函数,使用迭代器协议访问对象,生成器实现迭代器协议。所以,我们可以像这样直接计算一系列值的总和:
sum(x range(4)中x的x ** 2)
与其重新发明轮子,不如先建立一个列表:
sum([x range(4)中x的x * * 2)]
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。