一、列表推導式
a = [1, 2, 3, 4, 5]
result = [i*i for i in a]
print(result)
1
2
3
1
2
3
二、lambda函數
1、lambda函數即為匿名函數,僅在定義匿名函數的地方使用這個函數,其他地方用不到,所以就不需要給它取個阿貓阿狗之類的名字了。
匿名函數一般不會單獨使用,而是配合其他方法,為其他方法提供內置的算法或判斷條件
a=(lambda x,y:x+y)(3,4)
print(a)
1
2
1
2
2、與map函數一起使用時:
map(function, iterable, …)
map() 會根據提供的函數對指定序列做映射。
參數序列中的每一個元素調用 function 函數,返回包含每次 function 函數返回值的新列表。
function – 函數
iterable – 一個或多個序列
Python 3.x 返回迭代器
a = [1, 2, 3, 4, 5]
b = [5,4,3,2,1]
result = map(lambda x,y:x*y,a,b)
for i in result:
print(i)
1
2
3
4
5
1
2
3
4
5
三、yield 以及生成器和迭代器
迭代器,它可以像list那樣被遍歷,但又不占用多少內存generator(生成器)是一種特殊的迭代器,只能被遍歷一次,遍歷結束,就自動消失了
總之,不管是迭代器還是生成器,都是為了避免使用list,從而節省內存
python內置了迭代函數 iter,用于生成迭代器
yield 則是用于構造生成器的
generator保存的是函數算法,節約內存
generator也是可迭代對象
可用next函數調用,也可以用for循環調用
Python3的for循環本質上就是通過不斷調用next()函數實現的
generator保存的是算法,每次調用next(generaotr_ex)就計算出他的下一個元素的值,直到計算出最后一個元素,沒有更多的元素時,拋出StopIteration的錯誤
generator和函數的執行流程,函數是順序執行的,遇到return語句或者最后一行函數語句就返回。而變成generator的函數,在每次調用next()的時候執行,遇到yield語句返回,再次被next()調用時候從上次的
#單行注釋,三對雙引號多行注釋
year = 2009 is_run_nian = 0 if year % 4 != 0: is_run_nian = 0 elif year % 4 == 0 and year % 100 != 0: is_run_nian = 1 elif year % 100 == 0 and year % 400 == 0: is_run_nian = 1 print is_run_nian
首先,Java、Python、Go、C++等編程語言都是目前在IT行業內被廣泛使用的編程語言,除了Go語言之外,其他語言也都有大量的成熟案例,所以對于初學者來說,這些編程語言都是不錯的選擇。
從語言自身的難易程度上來說,Python語言和Go語言在語法結構上要更加簡潔一些,Java和C++語言要稍微復雜一些,當然這也與編程語言的設計思想有直接的關系。對于計算機基礎比較薄弱的人來說,從Python語言開始學起是個不錯的選擇。目前Python語言的上升勢頭比較明顯,伴隨著大數據和人工智能的發展,未來Python語言的應用范圍將得到進一步擴大,尤其是產業互聯網階段。
其次,程序開發人員能否在程序開發的道路上走得更遠,編程語言只是其中的一個因素,更重要的因素在于自身的研發能力,其實編程語言只是一個工具而已。曾經流傳這樣一個說法:一流程序員靠數學;二流程序員靠算法;三流程序員靠邏輯;四流程序員靠SDK,再往后就是靠各種搜索引擎和編程博客了。從這個角度來看,編程語言對于程序員能力的影響是有限的。
最后,編程的過程說到底就是數學問題,所以研發級程序員往往都需要具備扎實的數學基礎,一個程序員最終能夠成長的高度往往是由數學等基礎學科決定的。如果單純的從編程語言的角度出發,目前Python和Go的發展趨勢更明顯一些。
我從事互聯網行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大數據和人工智能領域,我會陸續寫一些關于互聯網技術方面的文章,感興趣的朋友可以關注我,相信一定會有所收獲。
如果有互聯網方面的問題,也可以咨詢我,謝謝!