關(guān)于Python的20個(gè)奇技淫巧

Python有非常多有趣使用的技巧雅潭,下面列舉20個(gè)短小精煉的用法,其中既包含常規(guī)語(yǔ)法但绕,又有第三方庫(kù)的妙用救崔,體現(xiàn)了python簡(jiǎn)單即美的編程哲學(xué)惶看。

  1. 快速實(shí)現(xiàn)字頻統(tǒng)計(jì)
from collections import Counter

words = '''我明白你的意思,你的意思就是想意思意思六孵,但是你不明白我的意思纬黎,我的意思是你不用意思意思。'''
word_counts = Counter(words) 
top_three = word_counts.most_common(3) 
print(top_three) 

# 輸出:[('意', 8), ('思', 8), ('你', 4)]
  1. 漢字轉(zhuǎn)拼音
import pypinyin
words = "床前明月光"
pypinyin.pinyin(words)

# 輸出:[['chuáng'], ['qián'], ['míng'], ['yuè'], ['guāng']]
  1. 查看某個(gè)文件夾里是否有python文件(或其他格式文件)
import os 
files = os.listdir("E:\\testfile\\") 
if any(name.endswith('.py') for name in files):
    print(1)
  1. 快速打印字符串
row = ["我", "愛(ài)", "python"] 
print(*row,sep="")

# 輸出:我愛(ài)python
  1. 計(jì)算兩個(gè)日期間隔天數(shù)
from datetime import date
d1 = date(2020,1,1) 
d2 = date(2020,9,13) 
print(abs(d2-d1).days)

# 輸出:256
  1. 字符串拆解為鍵值對(duì)
    比如'x=11,y=20'拆解成{'x': 42.0, 'y': 1.0}
kvp = lambda elem,t,i: t(elem.split('=')[i]) 
parse_kvp_str = lambda args : dict([(kvp(elem,str,0), kvp(elem,float,1)) for elem in args.split(',')]) 
parse_kvp_str('x=11,y=20') 

# 輸出:{'x': 42.0, 'y': 1.0}
  1. 變量值交換
a = 1
b = 2
a, b = b, a
  1. 將值追加到字典某個(gè)鍵下的列表中
d = {} 
d.setdefault(2, []).append(23) 
d.setdefault(2, []).append(11) 
d[2] 

# 輸出:[23, 11]
  1. 返回列表中出現(xiàn)次數(shù)最多的元素
test = [1, 2, 3, 5, 2, 2, 3, 1, 2, 6, 2] 
print(max(set(test), key = test.count)) 

# 輸出:2
  1. 查看某個(gè)變量占用內(nèi)存大小
import sys 
x = 1
print(sys.getsizeof(x)) 

# 輸出:28
  1. 隨機(jī)返回幾個(gè)字母組成的單詞
import string, random 
randword = lambda n: "".join([random.choice(string.ascii_letters) for i in range(n)])

# 輸出:'qsNWZF'
  1. 從混亂的字符串中分解出單詞
words = lambda text: ''.join(c if c.isalnum() else ' ' for c in text).split() 
words('Johnny.Appleseed!is:a*good&farmer') 

# 輸出:['Johnny', 'Appleseed', 'is', 'a', 'good', 'farmer']
  1. 打印進(jìn)度條
import time 
import sys 
for progress in range(100): 
  time.sleep(0.1) 
  sys.stdout.write("Download progress: %d%%   \r" % (progress) )  
  sys.stdout.flush() 
  1. 快速反轉(zhuǎn)字符串
a = 'Python is a powerful languange.'
print(a[::-1])

# 輸出:.egnaugnal lufrewop a si nohtyP
  1. 找出兩個(gè)列表中不一樣的元素
list1 = ['Scott', 'Eric', 'Kelly', 'Emma', 'Smith']
list2 = ['Scott', 'Eric', 'Kelly']

set1 = set(list1)
set2 = set(list2)

list3 = list(set1.symmetric_difference(set2))
print(list3)

# 輸出:['Emma', 'Smith']
  1. 刪除列表中的重復(fù)項(xiàng)
listNumbers = [20, 22, 24, 26, 28, 28, 20, 30, 24]
list(set(listNumbers))

# 輸出:[20, 22, 24, 26, 28, 30]
  1. 將兩個(gè)列表變?yōu)樽值?/li>
ItemId = [54, 65, 76]
names = ["Hard Disk", "Laptop", "RAM"]
itemDictionary = dict(zip(ItemId, names))
print(itemDictionary)

# 輸出:{54: 'Hard Disk', 65: 'Laptop', 76: 'RAM'}
  1. 移除字符串中的標(biāo)點(diǎn)
punctuations = '''!()-[]{};:'"\,<>./?@#$%^&*_~劫窒,本今。!烛亦?'''
my_str = "你好诈泼,!!我的網(wǎng)名叫作:隔-壁-老-王懂拾。"

# 移除標(biāo)點(diǎn)
no_punct = ""
for char in my_str:
   if char not in punctuations:
       no_punct = no_punct + char

print(no_punct)

# 輸出:你好我的名字叫作:隔壁老王
  1. 創(chuàng)建一個(gè)文件(如果該文件不存在)
import os  

MESSAGE = '該文件已經(jīng)存在.'
TESTDIR = 'testdir'
try:
    home = os.path.expanduser("~")  
    print(home)  

    if not os.path.exists(os.path.join(home, TESTDIR)):  
        os.makedirs(os.path.join(home, TESTDIR))  
    else:
        print(MESSAGE)
except Exception as e:
    print(e)
  1. 從函數(shù)中返回多個(gè)值
def f():
    return 1,2,3,4 

a,b,c,d = f()
print(a,b,c,d) 

# 輸出:1,2,3,4
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末煤禽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子岖赋,更是在濱河造成了極大的恐慌檬果,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唐断,死亡現(xiàn)場(chǎng)離奇詭異选脊,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)脸甘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門恳啥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)纹腌,“玉大人痴鳄,你說(shuō)我怎么就攤上這事×兆矗” “怎么了铆遭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵硝桩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我枚荣,道長(zhǎng)碗脊,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任橄妆,我火速辦了婚禮衙伶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘害碾。我一直安慰自己痕支,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布蛮原。 她就那樣靜靜地躺著卧须,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上花嘶,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天笋籽,我揣著相機(jī)與錄音,去河邊找鬼椭员。 笑死车海,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的隘击。 我是一名探鬼主播侍芝,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼埋同!你這毒婦竟也來(lái)了州叠?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凶赁,失蹤者是張志新(化名)和其女友劉穎咧栗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體虱肄,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡致板,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咏窿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斟或。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖集嵌,靈堂內(nèi)的尸體忽然破棺而出萝挤,到底是詐尸還是另有隱情,我是刑警寧澤纸淮,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布平斩,位于F島的核電站,受9級(jí)特大地震影響咽块,放射性物質(zhì)發(fā)生泄漏绘面。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一侈沪、第九天 我趴在偏房一處隱蔽的房頂上張望揭璃。 院中可真熱鬧,春花似錦亭罪、人聲如沸瘦馍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)情组。三九已至燥筷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間院崇,已是汗流浹背肆氓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留底瓣,地道東北人谢揪。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捐凭,于是被迫代替她去往敵國(guó)和親拨扶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容