- N +

鏈表python(python中什么相當于鏈表)

可以用Python編程語言做哪些神奇好玩的事情

Python作為一種應用極為廣泛的語言,幾乎在任何領域都能派上用場。想做Web有Flask/Django/Tornado;想做分布式有Celery;想做手機App有Kivy;想做數據分析有Pandas;想做可視化有Matplotlib/Seaborn/Plotly/Bokeh;想做機器學習有Tensorflow/PyTorch/MxNet……

夸張一點說,幾乎沒有什么做不了的東西(筆芯)。小慕今天分享兩個可以用Python做的非常好玩的事情,大家都可以試試看~一、面部識別

得益于大量前人的工作,如今利用Python做一些簡單的計算機視覺工作已經變得非常非常簡單了。像人臉識別、面部特征提取之類的工作,就可以直接拿來用,極少需要自己實現繁瑣的算法。

DLib就是一個這樣的C++庫,而同時它也提供了Python接口。

想必大家都有過在辦公室遭遇boss探視的經歷,而此時此刻你卻在毫無自知地逛著淘寶/知乎/豆瓣,場面一度十分尷尬……

那我們就來嘗試一下,用Python通過攝像頭探測人臉。如果有人進入了攝像頭范圍,則讓Python提出一個通知,告訴你——趕緊把不相關的東西關掉!

整個代碼很短,無非幾十行,為了能夠使用,我們還需要安裝一些包和庫。這里需要用到的包括OpenCV和DLib。由于dlib需要boost-python,因此還需要安裝boost和boost-python。(注意:boost-python默認情況下只編譯python2依賴的庫,如果使用python3,需要加編譯開關;而dlib里是沒有探測python版本的,所以可能還需要做一些小hack或者是直接改boost-python庫里的文件名)

至于代碼,可以簡單地放出來:

importcv2importdlibfromsubprocessimportcallfromtimeimporttimeFREQ=5FACE_DETECTOR=dlib.get_frontal_face_detector()#macOS下可以使用AppleScript發送通知defnotify(text,title):cmd=r'displaynotification"%s"withtitle"%s"'%(text,title)call(["osascript","-e",cmd])if__name__=='__main__':#初始化攝像頭cap=cv2.VideoCapture(0)#創建繪圖窗口#cv2.namedWindow('face')notify_time=0whileTrue:#獲取一幀ret,frame=cap.read()#不需要太精細的圖片frame=cv2.resize(frame,(320,240))#探測人臉,可能有多個faces=FACE_DETECTOR(frame,1)forfaceinfaces:#提取人臉部分畫個方框#fimg=frame[face.top():face.bottom(),face.left():face.right()]#cv2.rectangle(frame,(face.left(),face.top()),(face.right(),face.bottom()),(255,0,0),3)#不超過FREQ秒一次的發提醒iftime()-notify_time>FREQ:notify(u'檢測到人臉',u'注意')notify_time=time()#畫到窗口里#cv2.imshow('face',frame)#按Q退出ifcv2.waitKey(500)&0xff==ord('q'):break#清理窗口釋放攝像頭#cv2.destroyAllWindows()cap.release()

代碼的原理很簡單:通過opencv捕獲攝像頭獲取的圖像,然后交由dlib的facedetector進行檢測。如果檢測到臉部,則通過AppleScript發出系統提醒(notify函數即通過process執行AppleScript發出提醒,如果你使用的是Windows,也可以替換成別的內容,例如Win下使用VBScript發出彈窗提醒)。

當然,既然檢測到人臉,那就不僅僅只是能做簡單提醒了。還可以做的事情包括多張照片的臉部變形合成——比如,找出你和你女朋友的照片來做個夫妻相合成什么的……

或者,提取所有的標志性點,給人臉合成出意外的表情或者哈哈鏡效果。

甚至可以借助其它的深度學習網絡進行人臉識別。這算是超級弱化版的臉部識別,比不上FaceID但也挺好玩,不過計算量就不容樂觀了。

順便說一句,什么人臉識別關掉不該看的東西,對小慕來說不存在的,人家上班刷知乎可是經過老板點頭的!(驕傲臉叉腰)

二、數據分析

來分析下Marvel今年的最后一部戲:「雷神3:諸神的黃昏」。前一段時間滿天飛的預告片,神秘博士的客串,綠巨人的出演,看得人十分興奮!來張大圖:

大家對于這部電影的評價是怎么樣的呢?小慕爬取了2w條豆瓣影評,做一個簡單分析。

先來看看豆瓣的短評:

這里只抓取了前2w條評論,說一個小技巧,喜歡寫爬蟲的小伙伴們注意了:爬取的網頁一定要緩存到本地!這可以減少解析網頁時出錯,避免需要重新再爬一遍的「尷尬」!另外這能給服務器減少負載,人家網站管理員看你的請求還算守規矩,也就不會封你賬號/ip啦!

代碼大概是這樣的:

下面是緩存下來的網頁文件:

既然有2w多條數據,怎么能直接寫sql,那會累死的……于是要來封裝一下操作數據庫的邏輯:

來看看效果,除去部分出錯的,還剩下19672條:

具體的數據是長這樣的:

另外,贊同數量排名第一卷耳君的影評實在是太有意思了:

第一部:《爸爸,再愛我一次》

第二部:《哥哥,再愛我一次》

第三部:《姐姐,再愛我一次》

ps:托爾終于從錘神變成了雷神

錘子之神這個梗小慕表示能玩一年(手動微笑臉)。

光有數據還不足以說明什么,深入分析一波:細心的小伙伴一定發現了,雷神明明是11月3號才上映,為啥10月份就有影評了?小慕猜測,這肯定是漫威鐵桿粉跑國外看了,一查發現,果然人家洛杉磯10月10號就上映了:

既然關心到日期,可以來統計一下周一到周日哪天去看電影的人比較多:

整體數據顯示:果然還是周末去看電影的人更多……周一數據高于二、三、四的原因,不知道是不是沒有周末的朋友調休去看的?

PS:數據庫里的日期是2017-10-25格式的:怎么快速讓他顯示成周X呢?這里只要寫個小函數就行:

從數據庫里讀數據和統計的方式在這:(后面的統計方式也都類似,就不每次都把代碼放出來啦)

說了這么多還是沒提到電影的受歡迎程度,直接放圖:

總體上看還是推薦的人比較多耶,這應該挺符合大家的預期,畢竟是漫威出品,光忠實粉絲就不計其數。更何況這個片子里出現了很多超級火爆的場面戲,還有各種超級英雄助陣,這樣的統計結果也就不足為奇了。

最后將排名前100的評論內容做了一下分詞,做成詞云:

至于補充提問中提到的這為什么適合用Python做,其實說到底就是用Python來抓取和處理各種數據都非常「順手」。

據小慕所知,目前的數據工作中,數據科學家使用最多的工具語言就是Python,排在第二的工具語言是R語言。但這里有一個有趣的現象,那就是同時使用Python或者R語言的人,推薦別人使用Python的卻遠高于R語言。Why?

答案是:

1.Python簡單易學,極其容易上手,語法簡單,處理速度會比R語言要快,而且無需把數據庫切割。

2.市場前景好,是目前的趨勢,就業也會更容易。

3.標準庫非常龐大,特別的“功能齊全”,可以處理各種工作,其中就包含抓取和處理數據。

所以,有一種說法是:python語言在工程方便比較實用,R語言則更受學術界歡迎。具體是否贊同這種說法,還要看大家自己的理解咯~其實除了小慕舉例說的這兩種有趣的事情,Python能做的還有很多,在此不一一列舉,如果感覺get到了新姿勢,記得回來點贊啦~

程序員學習交流請添加慕課網官方客服微信:mukewang666回復暗號“前端面試”可進前端交流群回復暗號“Java”可進Java交流群回復暗號“專欄”可進程序員交流群

python list[3::-1]是什么意思

從位置3反向截取list中的數組。

list參數分別是截取位置、截取方式。3代表從list第三個位置開始截取,-1代表反向截取。

在編程語言中List是雙向連結串行,以線性列的方式管理物件集合。list的特色是在集合的任何位置增加或刪除元素都很快,但是不支持隨機存取。

list是類庫提供的眾多容器(container)之一,除此之外還有vector、set、map、…等等。list以模板方式實現(即泛型),可以處理任意型別的變量,包括使用者自定義的資料型態。

擴展資料

list是雙向循環鏈表,每一個元素都知道前面一個元素和后面一個元素。

在STL中,list和vector一樣,是兩個常被使用的容器。和vector不一樣的是,list不支持對元素的任意存取。list中提供的成員函數與vector類似,不過list提供對表首元素的操作push_front、pop_front,這是vector不具備的。

和vector另一點不同的是,list的迭代器不會存在失效的情況,他不像vector會保留備份空間,在超過容量額度時重新全部分配內存,導致迭代器失效;list沒有備份空間的概念,出入一個元素就申請一個元素的空間,所以它的迭代器不會失效。

參考資料來源:

python中的鏈表和列表有什么區別

在高級語言中好像沒有鏈表結構,非要說一個,個人覺得是數組,可以用下標訪問其中的數據,并且自身沒有存儲排在前后位置。在Python定義中list是集合數據類型。

Python開發的大佬們,做開發是不是需要算法好呀

算法不是開發必備技能,這要看你具體做哪塊內容,不同的開發內容所用到的技能也不一樣,因為Python所應用到的領域有很多,具體情況具體分析。以下幾點帶你了解所用到的算法的地方

1.數據挖掘方面的工作,這個工作崗位會用到一些算法,不過數據挖掘崗位不是那么嚴格,如果是初級的數據挖掘崗位,對于算法要求不是很多,如果是高級的數據挖掘,那算法的部分隨處可見,算法也是必備技能之一。

2.人工智能。近幾年人工智能大火,從而也帶動了Python的發展,只要是人工智能的崗位算法是繞不開的,雖說其他語言也可以,但是都沒有Python簡單易懂和高效率,越高的職位也要求你對算法理解程度越高。

3.如果單單的爬蟲,開發項目,算法倒是很少用到,項目效率也是很高的,畢竟Python也只是腳本語言,易學易懂,也是新手學習編程的最佳選擇!

希望以上回答對你有所幫助!

Python中頭節點的意思

帶頭結點的鏈表就和一般的火車一樣,火車頭就相當于頭結點,第一個節點就相當于第一節車廂,如果要裝乘客就只能裝在第一節車廂內,而不能一開始就裝在火車頭內。

學習python具體要學習哪些內容去哪學習好

Python這幾年太火的,以至于大家聊天都會不自覺的甩出幾句互聯網熱詞,仿佛不聊點跟科技有關的話題,你都太low了。

Python這門語言是大多數編程初學者最熱衷的選擇,簡單,易學,好上手,滿足自我成就感,但他們有點高興的過早,Python還有更高級的玩法,只是他們還沒有接觸到,就過早的沾沾自喜了。

簡單說說Python初級都應該掌握哪些內容,這樣跟別人侃大山也能讓人對你頂禮崇拜

Python基礎,循環語句,字符串,列表,元組,函數,面向對象等等,此處省略五百字

Python高級,閉包,裝飾器,深拷貝,進程,正則表達式等

玩Python的哪能不會LINUX系統,數據庫也要都通曉,像MySql、Redis、MongoDB

框架走一圈,Django模型、視圖,高級,擴展

想入手Python,前端html探探水,H5C3高級、JavaScript、Jquery、Bootstrap、

VUE.JS

等等,此處省略一萬字,知識點太多,把我自己要繞暈啦

小黑板敲一敲,

Python基礎知識,正則,jsonpath、xpath清洗數據、scrapy框架與世隔絕CrawlSpider類,scrapy-redis分布式策略等等

等等,還沒完呢,如果你以為Python就是這些那就錯了,下面是Python高級的玩法,想學Python的仔細看看

玩Python其實并不是掌握功能,而更重要的是要掌握各種算法,像雙鏈表,循環鏈表,堆,棧,隊列,排序算法,查找算法,樹,二叉樹,遍歷等等

你還要更了解些機器學習常規算法

如果你掌握了上面的知識,那么恭喜你,你已經成功進級Python程序員隊列。

返回列表
上一篇:
下一篇: