三元表達式,列表生成式,生成器生成式

三元表達式

能夠將if...else..…分支變成一行less

語法:code

條件爲真時的結果 if 判斷的條件 lese 條件爲假時的結果對象

a = 1
b = 2
#第一種寫法
erroStr = "More" if a > b else "Less"
print(erroStr) # 運行結果爲:Less
#第二種寫法
print({True:'More',False:'less}[a > b]')#運行結果爲Less
#第三種寫法
print(("FalseValue", "TrueValue")[a > b]) # 運行結果爲:FalseValue

列表生成式

能夠一行實現生成列表索引

語法:資源

list = [值 for 可迭代對象中取出的每個值 in 可迭代對象]
list = [值 for 可迭代對象中取出的每個值 in 可迭代對象 if 判斷]
# 列表生成式
# list1 = [f'1{line}' for line in range(1, 101)]# print(list1)
# Demo: 將name_list列表中的每個人後綴都添加_dsb
# name_list = ['jason', '餅哥(大臉)', 'sean', 'egon']
# new_name_list = [name + '_dsb' for name in name_list]
# print(new_name_list)

應用場景:數據量小時採用generator

[line for line in range(1, 6)] ---> [1, 2, 3, 4, 5]

優勢:可依賴索引取值,取值方便it

缺點:浪費資源class

生成器表達式

生成器表達式(生成器生成式)object

應用場景:數據量過大時使用

(line for line in range(1, 6)) ---> g生成器(1, 2, 3, 4, 5)

優勢:節省資源

缺點:取值不方便

list1 = [line for line in range(1, 1000001)]
#列表生成式會將所有內容加載出來,浪費空間

g = (line for line in range(1, 1000001))
#<generator object <genexpr> at 0x0000026A4C1F0ED0>
#生成器表達式節省空間
相關文章
相關標籤/搜索