【python进阶】python语法糖

这篇文章适合扮猪吃老虎,想装逼人士观看,其他人员如果看了,就会变成上面这样,如果对本文有何异议,请传授我新的装逼大法(嘻嘻,私聊),嗯,安心看装逼大法吧

1. 几种不同的写法

第一种:普通写法:

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

2. 延伸

第四种最有意思,利用and的特点,若and前位置为假则直接判断为假,利用or的特点,若or前位置为真则判断为真。

从前往后找:and找假,or找真
# and:前真返后
>>> print(111 and 222)
>>> 222
# and:前假返前
>>> print(0 and 333)
>>> 0
从前往后找:and找假,or找真
# 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的理解

3. 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放在循环的后面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章