python一行写if else,以及if else列表推导
程序员文章站
2022-03-01 14:57:44
...
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
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判断,筛选包含某个字符的元素,或者判断元素是否等于某个值