python一行写if else,以及if else列表推导
1. if else
1个if else
多个if else
(1)如果第一个if成立,则返回第一个if左边的结果
>>> b=0 >>> a = 1 if b==0 else 3 if b==1 else 4 >>> print(a) 1
(2)如果第一个if不成立,看第二个if,如果第二个if成立,则返回第二个if左边的else结果
>>> b=0 >>> a = 1 if b==1 else 3 if b==0 else 4 >>> print(a) 3
(3)如果第一个if不成立,看第二个if,如果第二个if不成立成立,则返回第二个if右边的else结果
>>> b=0 >>> a = 1 if b==1 else 3 if b==2 else 4 >>> print(a) 4
需要注意的是,if后面是判断表达式,else后是值,不能是表达式
2. if else列表推导
(1)for value in a_list在推导式的结尾
>>> a_list = [1,2,3] >>> a = [value if value>1 else 4 if value==1 else 5 for value in a_list] >>> print(a) [4, 2, 3]
第一个if value>1,因为a_list中2,3都大于1,满足第一个if表达式,所以直接返回第一个if左边的结果
第二个if value==1,因为a_list中还剩‘1’这个元素没有处理,且满足第二个if表达式,所以返回第二个if左边else的结果,反之,则返回第二个if表达式右边else的结果
>>> a_list = [1,2,3] >>> a = [value if value>1 else 4 if value==1 else 5 for value in a_list] >>> print(a) [4, 2, 3] >>> a = [value if value>1 else 4 if value==2 else 5 for value in a_list] >>> print(a) [5, 2, 3]
(2)for value in a_list在if判断的左边
>>> a_list = [ab,ac,bc] >>> a = [value for value in a_list if a in value] >>> print(a) [ab, ac]
或者
>>> a_list = [ab,ac,bc] >>> a = [value for value in a_list if value==ab] >>> print(a) [ab]
for value in a_list后面接一个if判断,筛选包含某个字符的元素,或者判断元素是否等于某个值