下面直接展示內聯**片
。(#備註內容為學習後的感想與總結)
# author: xuxt time:
2020/12
/14l=
def my_func
(x):
return
2* x
for i in
range(5
):l.
(my_func
(i))
print(l
)# 定義「我的函式」輸入x,返回,2x,即輸入1,2,3,4,5可以得到2,4,6,8,10。for
in迴圈,範圍是5,i從0取到4。a1=
[my_func
(i)for i in
range(5
)]print(a1
)# 簡化寫法可以改寫為[
*for i in
*]。第乙個*為對映函式,把i通過某乙個函式對映到輸出值,第二個*
為迭代物件range(5
),即0,1,2,3,4,傳到對映函式中。a2=
[m +
'_'+ n for m in
['a'
,'b'
]for n in
['c'
,'d']]
print(a2
)# m對a,b列表進行迭代,n對c,d列表進行迭代,前者為外層迴圈,後者為內層迴圈
a, b =
'cat'
,'dog'
condition =
2>
1if condition:
value = a
else
: value = b
value =
'cat'if2
>
1else
'dog'
print
(value)
# 同樣是簡寫,帶有if的條件賦值的語法糖。a、b分別賦值為cat、dog,條件為2
>
1,如果條件符合則為cat,條件不符則為dog。簡化後可以直接cat if 條件,否則dog。a3=
[1,2
,3,4
,5,6
,7]a4
=[i if i <=
5else
5for i ina3]
print(a4
)# 截斷。a3賦值為1
-7的陣列,a4語法糖的截斷,如果i小於等於5則為i,否則為5,即大於5時i取5.i在a3中迴圈。
# author: xuxt time:
2020/12
/16my_func = lambda x:
2* x
print
(my_func(3
))print
((lambda x:
2* x)(3
))# 匿名函式。前文提到的my_func函式應def定義一下,這裡使用匿名函式,不一定需要把def函式顯示出來。如兩個print結果是一致的,即可以不需要賦值乙個my_func函式
multi_para_func = lambda a, b: a + b
print
(multi_para_func(1
,2))
print
((lambda a, b: a + b)(1
,2))
# 同理,這裡的multi_para_func函式,使用lambda做乙個加法,兩個print的結果一致。a1=
[(lambda x:
2*x)
(i)for i in
range(5
)]print(a1
)'''
顯然,上述的兩個print的1式都不是嚴格意義上的「匿名」,此處為不關心函式名字只關心對映的例子。
如式子中
(lambda x:
2*x)
(i)為對映函式,for
in迴圈,迭代物件range(5
)。即取值為0,1,2,3,4傳入對映函式輸出應為0,2,4,6,8
'''a2
=list
(map
(lambda x:
2*x,
range(5
)))print(a2
)# python為這類列表推導式的匿名函式對映提供了map函式來完成,返回的是map物件,需要list轉為列表。輸出得到與上述內容相同的結果。a3=
list
(map
(lambda x, y:
str(x)
+'_'
+y,range(5
),list
('abcd'))
)print(a3
)# 多個函式對映時,可以增加map函式中迭代物件實現。如同樣的,lambda表示對映函式,range、list
('abcde'
)表示迭代關係。
# author: xuxt time:
2020/12
/16l1,
l2,l3=
list
('abc'),
list
('def'),
list
('hij')a1
=list
(zip(l1
,l2,l3
))print(a1
)for i, j, k in
zip(l1,
l2,l3)
:print
(i, j, k)
for i, j, k inl1,
l2,l3:
print
(i, j, k)
''' 字串外面加list將其轉成了單個元素的列表,如list
('abc'
)→[『a』, 『b』,
'c']。
將第乙個位置對應的元素都打包在一起,可使用zip函式。
往往在迴圈迭代的時候用到zip函式,可以看到有無zip函式輸出的結果是不同的,加入zip正式為了打包各列表第乙個位置對應的元素。
'''l
=list
('abcd'
)for index, value in
enumerate(l
):print
(index, value)
for index, value in
zip(
range
(len(l
)),l
):print
(index, value)
zipped =
list
(zip(l1
,l2,l3
))print
(zipped)a2=
list
(zip
(*zipped)
)print(a2
)'''
enumerate是另一種特殊的打包,它可以在迭代時繫結迭代元素的遍歷序號。
同樣,zip函式也能實現該功能。
有打包功能也有解壓功能,zip函式與*聯用即為解壓。
'''
元組 datawhale組隊學習python基礎
元組 定義語法為 元素1,元素2,元素n 與列表不同,元組是 列表是。t1 1 10.31 python t2 1,10.31 python print t1,type t1 1,10.31,python print t2,type t2 1,10.31,python tuple1 1 2,3 4,...
Datawhale組隊學習 Task01 02
這兩天主要學習的內容如下 task01 線性回歸 softmax與分類模型 多層感知機 1天 task02 文字預處理 語言模型 迴圈神經網路基礎 1天 num epochs 3for epoch in range 1 num epochs 1 for x,y in data iter output...
Datawhale公益AI組隊學習Task3 5
一類是模型無法得到較低的訓練誤差,我們將這一現象稱作欠擬合 underfitting 另一類是模型的訓練誤差遠小於它在測試資料集上的誤差,我們稱該現象為過擬合 overfitting 在實踐中,我們要盡可能同時應對欠擬合和過擬合。雖然有很多因素可能導致這兩種擬合問題,在這裡我們重點討論兩個因素 模型...