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

2021-10-05 08:40:33 字數 1863 閱讀 7873

1三元表示式

三元表示式是python為我們提供的一種簡化**的解決方案,語法如下:

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

針對以下場景

def

max2

(x,y)

:if x>y:

print

(x)else

:print

(y)max2(1,

2)

用三元表示式可以一行解決

x=1y=

2res=x if x>y else y

print

(res)

#2

2.列表生成式

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

針對以下場景:

egg_list=

for i in

range(10

):'雞蛋%s'

%i)

列表生成式一行可以解決

egg_list=

['雞蛋%s'

%i for i in

range(10

)]print

(egg_list)

3.生成器表示式

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

(expression for item in iterable if condition)
對比列表生成式返回的是乙個列表,生成器表示式返回的是乙個生成器物件

res=

[x*x for x in

range(3

)]print

(res)

#[0, 1, 4]

g=(x*x for x in

range(3

))print

(g)#at 0x0000000001e166d8>

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

>>

>

next

(g)0

>>

>

next

(g)1

>>

>

next

(g)4

>>

>

next

(g)#丟擲異常stopiteration

如果我們要讀取乙個大檔案的位元組數,應該基於生成器表示式的方式完成

with

open

('a.txt'

,mode=

'rt'

,encoding=

'utf-8'

)as f:

# 方式一(當每行內容過多的時候,會占用較多記憶體)

# res = 0

# for line in f:

# res+=len(line)

# print(res)

# 方式二(當行數太多時,會占用較多記憶體)

# res=sum([len(line) for line in f])

# print(res)

# 方式三

res=

sum(

len(line)

for line in f)

print

(res)

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

什麼是三元表示式?可以將if.else分支語句合併為一行 為什麼要使用三元表示式?三元表示式是python為我們提供的一種簡化 的解決方案 怎麼用三元表示式?res 條件成立返回的值 if 判斷條件 else 條件不成立返回的值 應用場景 不使用三元表示式方法 def max2 x,y if x y...

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

三元表示式 條件成立時的返回值 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...