這篇文章適合扮豬吃老虎,想裝逼人士觀看,其他人員如果看了,就會變成上面這樣,如果對本文有何異議,請傳授我新的裝逼大法(嘻嘻,私聊),嗯,安心看裝逼大法吧
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
放在循環的後面。