【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放在循環的後面。

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