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...