在python三元表示高度简单的for.[if] .语句python中,for.[if] .语句以简单的方式从for给出的列表中选择满足if条件的元素来配置新的列表。 其中,if可以省略。
a=[ 12,3,4,6,7,13,21 ]
newList=[x for x in a]
新列表
[12、3、4、6、7、13和21]
新列表2=[ x forx in a if x %2==0]
新清单2
[ 12,4,6 ]
的for.[if] .语句的嵌套for.[if] .语句可以通过从多个列表中选择满足if条件的元素来配置新列表。 让我举几个例子。
a=[ 12,3,4,6,7,13,21 ]
b=['a '、' b '、' x']
newlist=[(x,y ) for x in a for y in b]
新列表
[12,' a ',12,' b ',12,' x ',3,' a ',3,' b ',3,' x ',4,' a ',4,' b']
newList2=[(x,y ) y]forxinaforyinbifx%2==0andy'x']
新清单2
[12,' a ',12,' b ',4,' a ',4,' b ',6,' b']]
嵌套的for.[if] .语句相当于多个for语句,开头的for语句是最外层的循环。
else子句在python中对else有特殊的用法。 也可以与for、while等循环语句组合使用,或与异常处理的try except语句组合使用,使代码更简洁。
配合for/while循环语句使用
如果紧跟在for循环语句之后的是else子句,并且循环成功结束(例如,如果非return或break提前结束),则else子句的逻辑将执行到。 让我们先来看一个例子:
defprint_prime(n ) :
forIinxrange(2,n ) :
# found=True
forjinxrange(2,I ) :
if i %j==0:
# found=False
布雷克
else:
print((it ) sa prime number (.format (I ) ) ) ) ) ) ) ) )。
# if found:
#print((it ) saprimenumber ).format ) ) )
打印_ prime (7)。
结果:
2 it's a prime number
3 it's a prime number
5 it's a prime number
一个简单的打印素数的示例,在确定一个数字是否是素数时,必须遍历小于自己的整数,如果能除尽其中一个,则终止判断。 否则,打印是质数的info,如果有else的加持,则与整个例子的逻辑相当的“自表达式”就像伪代码一样被充分理解,如果能除尽的话,就设置标志值,在函数末尾进行判断
配合 try except错误控制使用
在异常处理语句中,else的用法类似。 如果try代码块没有抛出任何异常,则else语句块将在中执行。
defmy_to_int(str_param ) :
try:
打印(int (str _ param ) )
exceptValueError:
打印(cannot convert { } toa integer '.format (str _ param ) ) ) ) ) ) ) )。
else:
打印(转换) tointegersuccessfully (.format (str _ param ) ) ) ) ) ) ) )。
my_to_int('123 ) ) )
my_to_int(me123 ) ) ) )。
结果
123
convert 123 tointegersuccessfully
cannot convert me123 to a integer
如打印日志所示,如果转换成功但未发生错误,则执行else语句中的逻辑。 当然,这个例子可能不太实用,但我们可以大致说明else在错误处理中的有用性。 执行实际操作,以简化逻辑并准确了解是否发生了错误,而无需使用标志值(
利用else语句块,可以编写更简洁、更接近自然语言意义的代码。 当然,也会变得更pythonic。 细节请慢慢理解。