能夠將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> #生成器表達式節省空間