第一种:普通写法:
a, b, c = 1, 2, 3
if a>b:
c = a
else:
c = b
第二种:一行表达式, 为真时放if前:
c = a if a > b else b
第三种:二维列表,利用大小判断的0,1当作索引:
c = [b, a][a > b]
第四种:传说中的黑客,利用逻辑运算符进行操作,都是最简单的东西,却发挥无限能量:
c = a > b and a or b
第四种最有意思,利用and
的特点,若and
前位置为假则直接判断为假,利用or
的特点,若or
前位置为真则判断为真。
# and:前真返后
>>> print(111 and 222)
>>> 222
# and:前假返前
>>> print(0 and 333)
>>> 0
# or:前真返前
>>> print(111 or 222) #
>>> 111
# or:前假返后
>>> print(0 or 222)
>>> 222
>>> print('' or 0)
>>> 0
对于c = (a > b and a or b)
而言,
若(a>b and a)
真:a >b and a,
则a > b 为真
假:b,
则 a> b为假
补充:对于and的理解
if-else
加入列表生成式>>> example_list = ['abc', 'ab', 'a', 'bcde', 'abcde', 'c', 'dda', 'b']
>>> li = [1 if len(i) > 2 else 0 for i in example_list]
>>> li2 = [i for i in example_list if len(i) > 2]
>>>
>>> print(li)
>>> [1, 0, 0, 1, 1, 0, 1, 0]
>>>
>>> print(li2)
>>> ['abc', 'bcde', 'abcde', 'dda']
由此可知,如果有if-else
则把if-else
放在循环的前面,如果只有if
, 则把if
放在循环的后面。