这个语序有什么规则吗?

自己看书学习时,看到的因为刚学所以想问一下这样将if和for结合起来,有什么规则吗?

img

这谁for语句与ifelse语句的简写。
首先我们来看for语句简写:[ 对i的操作 for i in 列表 ]
再来看ifelse的简写:True的逻辑 if 条件 else False的逻辑
https://www.jb51.net/article/255057.htm#_lab2_0_0

这里的情况就是:将对i的操作换成了ifelse的简写
[ (True的逻辑 if 条件 else False的逻辑) for i in 列表 ]

而且这里循环的是个键值对,产生了两个变量:
[ (对j的操作 if 判断i是否满足条件 else 对j的操作) for i,j in 键值对]

这是一种固定的写法,列表推导式。

把原list里的按照if设定的规则判断把生成的值组成一个新list。

平时用可以减少代码量,如果初学有困难可以先略过,先按常规方法写,写的多了自然就熟悉了

这是个列表推导式
语法规则如下:
[a for b in c if d]
其中,c是个可迭代对象,b就是其中的每一项,a是列表里保留的结果,d是条件,如果条件不满足,那么对应的结果不放入列表
回到你这个题目里
无非就是a这个表达式本身是由 v**2 if i%2 !=0 else v这个三元运算符组成的而已,同时表达式里没有d,也就是不管什么值都往里放,不需要判断

这个现象叫 List Comprehension,详情可见 Python 官网:
https://docs.python.org/zh-cn/3/tutorial/datastructures.html#list-comprehensions