三元表示式 列表生成式 生成器生成式

2022-07-19 07:42:08 字數 1934 閱讀 2047

什麼是三元表示式?

可以將if...else分支語句合併為一行**

為什麼要使用三元表示式?

三元表示式是python為我們提供的一種簡化**的解決方案

怎麼用三元表示式?

res = 條件成立返回的值 if 判斷條件 else 條件不成立返回的值

應用場景

#不使用三元表示式方法

def max2(x, y):

if x > y:

return x

else:

return y

res = max2(1, 2)

print(res)

#結果為

2#使用三元表示式時

x = 1

y = 2

res = x if x > y else y

print(res)

#結果為

2# 需求: 讓使用者輸入使用者名稱,輸入的使用者如果不是bing綴新增_dsb

username = input('請輸入你的使用者名稱:')

res = username if username == 'bing' else username + '_dsb'

print(res)

什麼是列表生成式?

可以一行實現生成列表。

為什麼要使用列表生成式?

列表生成式是python為我們提供的一種簡化**的解決方案 , 用來快速生成列表

怎麼用列表生成式?

語法:

list = [取出的每乙個值,任意值+ for + 可迭代物件中取出的每乙個值 in 可迭代物件]

for的右邊是迴圈次數,並且可以取出可迭代物件中每乙個值# for的左邊可以為當前列表新增值

應用場景

#不使用列表生成式

egg_list =

for i in range(10):

print(egg_list)

#結果為

['雞蛋0', '雞蛋1', '雞蛋2', '雞蛋3', '雞蛋4', '雞蛋5', '雞蛋6', '雞蛋7', '雞蛋8', '雞蛋9']

#使用列表生成式

egg_list = ['雞蛋%s'%i for i in range(10)]

print(egg_list)

#結果為

['雞蛋0', '雞蛋1', '雞蛋2', '雞蛋3', '雞蛋4', '雞蛋5', '雞蛋6', '雞蛋7', '雞蛋8', '雞蛋9']

生成器表示式(生成式)

建立乙個生成器物件有兩種方式,一種是呼叫帶yield關鍵字的函式,另一種就是生成器表示式,與列表生成的語法格式相同,只需將換成()

語法:() ---> 返回生成器

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

生成器表示式與列表生成器的對比

#1.對比列表生成式返回的是乙個列表,生成器表示式返回的是乙個生成器物件

list = [x*x for x in range(3)]

print(list)

g = (x*x for x in range(3))

print(g)

#結果為

[0, 1, 4]

at 0x000001e821b321c8>

#對比列表生成式,生成器表示式的優點自然是節省記憶體(一次只產生乙個值在記憶體中)

#總結:列表生成式與生成器表示式優缺點以及應用場景

#列表生成式

#優點:因為其返回的是乙個列表,所以可以依賴索引取值

#缺點:占用記憶體空間大(一次性將所有值讀入記憶體),容易造成資源浪費

#生成器表示式

#優點:占用記憶體空間小,節省資源(一次只取乙個值)

#缺點:去某個特定的值不方便

三元表示式 列表生成式 生成器表示式

1三元表示式 三元表示式是python為我們提供的一種簡化 的解決方案,語法如下 res 條件成立時返回的值 if 條件 else 條件不成立時返回的值 針對以下場景 def max2 x,y if x y print x else print y max2 1,2 用三元表示式可以一行解決 x 1...

三元表示式,列表生成式,字典生成式,生成器表示式

三元表示式 條件成立時的返回值 if 條件 else 條件不成立時的返回值 def max2 x,y if x y return x else return y 表示式 x 10 y 20 res x if x y else y print res 列表生成式 中括號生成的 l item 2 for...

三元表示式,生成式,生成器表示式

使用函式來寫 defmax2 x,y if x y return x else return y res max2 3,4 print res 4?使用三元表示式 x 3 y 4 res x if x y else y print res 3,4 4 函式加三元表示式 defmax2 x,y ret...