三元表達式、列表推導式、生成器表達式、遞歸、匿名函數

三目運算符

# 三目(元)運算符:就是 if...else...語法糖
# 前提:簡化if...else...結構,且兩個分支有且只有一條語句
# 注:三元運算符的結果不必定要與條件直接性關係

cmd = input('cmd: ')
print('能夠轉化爲數字') if cmd.isdigit() else print('不能夠轉化爲數字')


a = 20
b = 30
res = a if a > b else b  # 求大值
print(res)


res = 'b爲小值' if a > b else 'a爲小值'  # 求小值
print(res)

列表推導式

# 列表推導式:[v for v in iterable]
dic = {'a': 1, 'b': 2, 'c': 3}  # => [('a', 1), ('b', 2), ('c', 3)]
res = [(k, v) for k, v in dic.items()]

# 字典推導式:{k: v fro k, v in iterable}
ls = [('a', 1), ('b', 2), ('c', 3)]  # => {'a': 1, 'b': 2, 'c': 3}
res = {k: v for k, v in ls}

生成器表達式

#一、把列表推導式的[]換成()就是生成器表達式

#二、示例:生一筐雞蛋變成給你一隻老母雞,用的時候就下蛋,這也是生成器的特性
>>> chicken=('雞蛋%s' %i for i in range(5))
>>> chicken
<generator object <genexpr> at 0x10143f200>
>>> next(chicken)
'雞蛋0'
>>> list(chicken) #因chicken可迭代,於是能夠轉成列表
['雞蛋1', '雞蛋2', '雞蛋3', '雞蛋4',]

#三、優勢:省內存,一次只產生一個值在內存中

  

遞歸

# ***
# 遞歸:回溯與遞推 
# 回溯:詢問答案的過程
# 遞推:推出答案的過程

# 本質:函數的自我調用
# 直接:本身調本身
# 間接:本身調別人,別人最終由調回本身

匿名函數

# 匿名函數:沒有名字的函數
# 語法:lambda 參數列表: 一個返回值表達式

# 重點:
# 1.匿名函數:沒有函數名,沒有函數體,只有一個返回值
# 2.關鍵字:lambda  |  參數列表省略()  |  返回值return關鍵字也被省略

# 應用場景:
# 1.匿名函數函數地址能夠被一個變量接受,該變量就能夠做爲函數名來使用,但就違背了匿名初衷
# 2.結合內置函數來使用: 內置函數某些參數須要一個函數地址,
#       -- 能夠賦值一個有名函數名,也能夠直接賦值匿名函數
相關文章
相關標籤/搜索