隨著深度學(xué)習(xí)、機(jī)器學(xué)習(xí)等技術(shù)的火熱發(fā)展,python 作為一種面向?qū)ο蟮膭?dòng)態(tài)類型語言也跟著火了起來。不少計(jì)算機(jī)科班出身的同學(xué),在大學(xué)期間學(xué)習(xí)的多是 C++或 java,雖然轉(zhuǎn)向 Python 難度并不大,但是有些 Python 使用的小技巧,由于受限于 C++和 java 思維的限制,可能不會(huì)往那方面去想(畢竟當(dāng)我知道了一些 Python 的技巧之后,直接驚嘆“臥槽,還能這樣搞?!”)
元素互換
之前,我們?cè)诮o a 和 b 交換值時(shí),通常的操作是:
a = 10b = 5temp = aa = bb = temp
Python 將這一操作簡(jiǎn)單化了
a = 10b = 5a,b = b,a
列表解析
列表解析是 Python 迭代機(jī)制的一種騷操作。有這樣一個(gè)任務(wù),給定一個(gè)由正整數(shù)組成的 list,然后刪除里面的偶數(shù)。比如a = [1,2,3,4,5,6,8],注意這里我很騷的取了[1,2,3,4,5,6,8]而不是[1,2,3,4,5,6,7]。你會(huì)怎么做?
a = [1,2,3,4,5,6,8]for item in a: if item%2==0: a.remove(item)
輸出是[1,3,5,8],并沒有成功,是不是?如果你拿[1,2,3,4,5,6,7]作為例子,返回的結(jié)果確實(shí)是你想要的結(jié)果,但是那只是巧了。
python 怎么做呢?
a = [1,2,3,4,5,6,8]a = [item for item in a if item%2 != 0]
是不是騷的很?
Counter
from collections import Countera = ['a', 'a', 'a', 'b', 'b', 'c']ptiny(dict(Counter(a)))
輸出為:
{'a': 3, 'b': 2, 'c': 1}
Counter 可以幫助我們自動(dòng)的去統(tǒng)計(jì)一個(gè) list 中各個(gè)元素的個(gè)數(shù)。這個(gè)在哪里常用呢?在我們 NLP 中統(tǒng)計(jì)詞頻時(shí)會(huì)經(jīng)常用到,至少筆者是喜歡用這個(gè)函數(shù)的。
zip 函數(shù)
先上代碼:
a = [1,2,3]b = ['a','b','c']for x, y in zip(a,b): print (x, y)
輸出為
1 a2 b3 c
這個(gè)有什么用呢?在用 Python 做深度學(xué)習(xí)或機(jī)器學(xué)習(xí)時(shí),需要構(gòu)造訓(xùn)練樣本和標(biāo)簽,那么我們有時(shí)可能會(huì)逐條獲取一條訓(xùn)練數(shù)據(jù),通過迭代 zip,就能一條一條的成對(duì)取出數(shù)據(jù)了。當(dāng)然了,zip()中可以添加任意多個(gè)可迭代的元素,不僅僅限于例子中的兩個(gè)。
exec
這是我接觸 Python 以來,見到的最騷最騷的操作了,而且是我在學(xué)習(xí) java 時(shí)就夢(mèng)寐以求的操作:我希望我能動(dòng)態(tài)輸入一段代碼(字符串),然后程序可以運(yùn)行之。學(xué)過 java 的人都知道,這是不行的,但是尼瑪 python 就行。
code = """from collections import Countera = ['a', 'a', 'a', 'b', 'b', 'c']print(dict(Counter(a)))"""exec(code)
大家可以試一下,真的可以。騷出天際了。
當(dāng)然了,你的確可以通過動(dòng)態(tài)輸入的方式,讓其運(yùn)行字符串代碼,比如:
code = input()
然后你輸入from collections import Counter; a = ['a', 'a', 'a', 'b', 'b', 'c']; print(dict(Counter(a)))輸入的字符串中,每一句代碼之間用分號(hào);分割,這一點(diǎn)和 java 們很像。然后再運(yùn)行
exec(code)
會(huì)得到同樣的結(jié)果。這個(gè)操作大家在用 python 做科學(xué)計(jì)算的時(shí)候,可能用不到,但是當(dāng)你用 python 寫項(xiàng)目的時(shí)候,可能就能派上用場(chǎng)了。
怎么樣,python 的這些騷操作,你都了解了嗎?
-
C++
+關(guān)注
關(guān)注
22文章
2117瀏覽量
74868 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8497瀏覽量
134222 -
python
+關(guān)注
關(guān)注
56文章
4825瀏覽量
86363
原文標(biāo)題:騷操作又來了,實(shí)用的python“奇技淫巧”
文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
?如何在虛擬環(huán)境中使用 Python,提升你的開發(fā)體驗(yàn)~

使用Python實(shí)現(xiàn)xgboost教程
電磁兼容的這些問題,你都考慮到了嗎?(下)

電磁兼容的這些問題,你都考慮到了嗎?(上)

朗凱威鋰電池定制 光伏發(fā)電到移動(dòng)電源?這些器件少不了!

有刷電機(jī)概述你了解了多少?

關(guān)于LCD應(yīng)用,你都了解什么?

Python常用函數(shù)大全
Python庫解析:通過庫實(shí)現(xiàn)代理請(qǐng)求與數(shù)據(jù)抓取
APM32F411板的python+pyocd命令行操作

評(píng)論