成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python中那些神一樣的算法

開發(fā) 后端 算法
我一直說python是非常優(yōu)美的語言,那到底如何個美呢,其中有一個特性就是簡潔。有的時候做產品不是要做加法而且要做減法,并且做到極致。

今天讓我們來看一下python里面非常有名的簡潔,高效,方便的代碼,讓我們來一睹她的風采。其實每個主題展開講都是很大的篇幅,今天我們先簡單看看。

[[395145]]

看完之后,相信初學者會更快地喜歡上python.

一.列表推導

要說python里面最簡潔最神奇的代碼,列表推導應該算排行第一。

這是一種非常精煉的寫法,可以根據一份列表來制作另外一份。這種表達式稱為list comprehension(列表推導)

例子1,利用一個列表生成一個新的列表

 

Python中那些神一樣的算法

 

例子2,甚至可以過濾一些列表中的元素,列如:

 

Python中那些神一樣的算法

 

例子3:若要需要對序列里面的內容進行循環(huán)處理時,也可以加一個函數進行組合完成

 

Python中那些神一樣的算法

 

看完列表推導的用法,是不是覺得眼前一亮好很方便啊。

二、with用法

一般我們處理文件都是先打開->然后處理->然后關閉.比較麻煩,還需要防止異常保護try/finally,很多時候我們都把精力集中在如何處理文件這樣會忘掉關閉文件.Python里面有一種非常簡潔的方法:

普通的打開,關閉文件處理:

 

Python中那些神一樣的算法

 

用with語句,使用起來非常簡單,有點像英語,用with語句能夠保證當寫操作執(zhí)行完畢之后,自動關閉文件

 

Python中那些神一樣的算法

 

其實with的使用場景非常多,除了對于文件的處理關閉,在多線程的使用里面對鎖的處理也是經常使用的 。以后的文章會講python的多線程,多進程的使用,會展開講.

with的用法體現了python的一個精髓:把一些繁瑣的事務交給語言本身,開發(fā)者只要focus放在處理問題的邏輯上就可以了.

三、匿名函數lambda

  • python里面有一個"懶人專用的函數",叫做匿名函數(也就是沒有函數名)的函數.我們在傳入函數時,有些時候,不需要顯式地定義函數,直接傳入匿名函數更方便.
  • lambda(這個名字其實是借鑒了另外一個黑客非常喜歡的語言LISP),lambda一般的形式是關鍵字lambda 后面跟一個或者多個參數,后面緊跟一個冒號,之后是一個表達式:
  • lambda arg1,agr2,...agrN:express using arguments

以map()函數為例,若要計算一個列表里面的每個元素的平方,可以直接傳入匿名函數:

 

  1. >>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]) 
  2. [1, 4, 9, 16, 25, 36, 49, 64, 81] 

 

通過對比可以看出,匿名函數lambda x: x * x實際上就是:

 

  1. def f(x): 
  2.     return x * x 

 

用匿名函數的好處是顯而易見的:

  • 一方面是可以免去取名字的麻煩(因為高質量的代碼對函數的取名是有一定的要求的)
  • 而且不必擔心函數名沖突
  • 此外,匿名函數也是一個函數對象,也可以把匿名函數賦值給一個變量,再利用變量來調用該函數:

四、生成器

生成器是python里面一個比較難理解的概念,也是Python中引入的兩個強大的特性之一(猜猜另外一個特性是啥,對了就是裝飾器)

今天我先來看一下它的一個簡單例子,一個關于斐波那契數列的實現:

 

Python中那些神一樣的算法

 

用了生成器的函數:

 

Python中那些神一樣的算法

 

看第二種方法代碼是不是簡潔很多,這就是yield關鍵字的魅力.

如果一個函數定義中包含yield關鍵字,那么這個函數就不再是一個普通函數,而是一個生成器函數,打印看一下.

 

  1. print(fac2(10)) 
  2. >>><generator object fac2 at 0x026958F0> 

生成器函數和普通函數的執(zhí)行流程非常不一樣:

  • 函數是順序執(zhí)行,遇到return語句或者最后一行函數語句就返回。
  • 而變成生成器的函數,只會相應迭代操作時才運行,一般都是配合for使用(也有配合sum(),list())
  • 在每次調用next()的時候執(zhí)行,遇到y(tǒng)ield語句返回,再次執(zhí)行時從上次返回的yield語句處繼續(xù)執(zhí)行。

 

好了,以上幾個就是python中非常神奇的代碼,不知道大家看完之后是不是對python的喜愛又加深了一分,其實簡潔高效就是python的代名詞.

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2020-02-28 15:49:26

2019-09-05 09:29:00

CAP理論分布式系統(tǒng)

2023-01-03 14:54:37

技術管理

2022-09-26 08:06:24

Go語言

2022-09-23 15:23:08

webpack5改變代碼

2011-02-28 10:38:13

Windows 8

2012-03-07 17:24:10

戴爾咨詢

2012-12-20 10:17:32

IT運維

2009-06-12 15:26:02

2015-08-25 09:52:36

云計算云計算產業(yè)云計算政策

2013-01-11 18:10:56

軟件

2009-07-07 10:44:14

多態(tài)

2022-01-09 16:59:04

應用打碼工具DAMA

2013-12-17 09:02:03

Python調試

2013-12-31 09:19:23

Python調試

2023-05-23 13:59:41

RustPython程序

2021-05-01 06:28:32

Windows10操作系統(tǒng)微軟

2015-10-19 12:33:01

華三/新IT

2017-05-25 15:02:46

聯(lián)宇益通SD-WAN

2021-05-20 08:37:32

multiprocesPython線程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 狠狠干五月天 | 羞羞网站在线观看 | 91在线免费观看网站 | 精品一区二区三区在线视频 | 亚洲成人av | 亚洲视频中文字幕 | 国产精品久久久乱弄 | 6996成人影院网在线播放 | 亚洲福利在线观看 | 欧美精品一二区 | 国产一区在线免费观看视频 | 中文字幕在线观看 | 亚洲一区在线观看视频 | 国产日韩欧美 | 欧美性久久久 | 成人久久久 | 国产99久久久久 | 日韩三级| 日韩国产精品一区二区三区 | 欧美在线观看一区 | 天天操天天干天天透 | 亚洲福利一区 | 91精品国产91久久久久久吃药 | 日韩福利| 一区二区三区四区在线视频 | 欧美日韩中文字幕 | 久久综合香蕉 | 欧美在线一区二区视频 | 凹凸日日摸日日碰夜夜 | 黄色一级免费 | 亚洲国产欧美精品 | av黄色免费在线观看 | 国产粉嫩尤物极品99综合精品 | 亚洲国产成人久久久 | 亚洲高清视频在线观看 | 欧美日韩国产一区二区三区 | 黄色毛片免费看 | 国产精品久久久久久久岛一牛影视 | 亚洲国产成人精品久久 | av在线免费不卡 | 亚洲一区 中文字幕 |