黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > Python 新手的五大坑

Python 新手的五大坑

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-11-06 17:42:18 1699263738

對于Python新手來說,寫代碼很少考慮代碼的效率和簡潔性,因此容易造成代碼冗長、執(zhí)行慢,這些都是需要改進(jìn)的地方。本文是想通過幾個案列給新手一點(diǎn)啟發(fā),怎樣寫python代碼更優(yōu)雅。

01.不喜歡使用高級數(shù)據(jù)結(jié)構(gòu)

sets(集合)

很多新手忽視sets(集合)和tuple(元組)的強(qiáng)大之處.

例如,取兩個列表交集:

defcommon_elements(list1,list2):

common=[]

foritem1inlist1:

ifitem1inlist2:

common.append(item1)、

returncommon

這樣寫會更好:

defcommon_elements(list1,list2):

common=set(list1).intersection(set(list2))

returnlist(common)

dic(字典)

新手枚舉(訪問和取出)字典的鍵和對應(yīng)值,認(rèn)為對應(yīng)值必須通過鍵來訪問,往往會這樣做:

my_dict={'a':1,'b':2}

forkeyinmy_dict:

print(key,my_dict[key])

有一個更優(yōu)雅的方法可以實(shí)現(xiàn):

my_dict={'a':1,'b':2}

forkey,valueinmy_dict.items():

print(key,value)

對大部分項(xiàng)目來說,這樣寫會更加有效率。

tuple(元組)

元組一旦創(chuàng)建就無法更改元素,看似沒有什么用處,其實(shí)元組的作用大著呢!很多函數(shù)方法都會返回元組,比如enumerate()和dict.items(),并且可以在函數(shù)中使用元組,返回多個值。還能夠很方便地從元組中提取信息:

a,b=('cat','dog')

上面元組中有兩個元素,分別被賦給a,b。如果有多個值,同樣可以提取:

a,b,c=('cat','dog','tiger')

print(a,b,c)

提取首、尾兩個元素:

first,*_,end=(1,2,3,4,5,6)

print(first,end)

#輸出:1、6

提取首、中、尾三部分:

first,*middle,end=(1,2,3,4,5,6)

print(first,middle,end)

#輸出:1、[2,3,4,5]、6

元組還可以用來交換變量:

(a,b,c)=(c,a,b)

上面a變成之前的c,b變成之前的a,c變成之前的b。元組也能作為字典的鍵,所以如果你需要存儲數(shù)據(jù),可以使用帶有元組鍵的字典,比如說經(jīng)緯度數(shù)據(jù)。

02.不喜歡使用上下文管理器

新手可能會習(xí)慣這樣進(jìn)行讀取文件操作:

ifos.path.exists(data_file_path):

data_file=open(data_file_path,'r')

else:

raiseOSERROR

print(data_file.read())

data.close()

這樣寫會有幾個明顯的問題:

·可能出現(xiàn)文件存在,但文件被占用,無法讀取的情況

·可能出現(xiàn)文件可以被讀取,但操作文件對象出現(xiàn)報(bào)錯的情況

·可能出現(xiàn)忘記關(guān)閉文件的情況

如果使用with…語句,問題就迎刃而解了:

withopen(data_file_path,'r')asdata_file:

print(data_file.read)

這樣可以捕獲任何打開文件或處理數(shù)據(jù)時的異常情況,并且在任務(wù)處理完后自動關(guān)閉文件。

python初學(xué)者可能不太了解上下文管理器的神奇之處,它真的能帶來巨大的便利。

03.不喜歡使用標(biāo)準(zhǔn)庫

標(biāo)準(zhǔn)庫itertools和collections仍然很少被初學(xué)者使用

itertools

如果你看到下面的任務(wù):

list1=range(1,10)

list2=range(10,20)

foritem1inlist1:

foritem2inlist1:

print(item1*item2)

這是一個嵌套循環(huán)操作,為提高代碼效率,完全可以用product()函數(shù)替代嵌套循環(huán):

fromitertoolsimportproduct

list1=range(1,10)

list2=range(10,20)

foritem1,item2inproduct(list1,list2):

print(item1*item2)

這兩段代碼的結(jié)果完全一樣,但使用標(biāo)準(zhǔn)庫函數(shù)明顯更加簡潔高效。itertools還有很多方便操作迭代對象的函數(shù),比如:

·count()函數(shù)會創(chuàng)建一個無限迭代器

·cycle()函數(shù)會把傳入的序列無限重復(fù)下去

·chain()可以把多個迭代對象串聯(lián)起來

·group()函數(shù)可以把迭代其中相鄰的重復(fù)元素挑出來,放在一起

有興趣可以詳細(xì)看看itertools庫的各種神奇函數(shù)。

collections

新手對python集合模塊了解的可能并不多,你可能會遇到這樣的情形:

consolidated_list=[('a',1),('b',2),('c',3),('b',4)]

items_by_id={}

forid_,iteminconsolidated_list:

ifid_notinitems_by_id:

items_by_id[id_]=[]

ifid_initems_by_id:

items_by_id[id_].append(item)

上面代碼構(gòu)建了一個字典,依次向字典中添加信息,如果某個鍵已經(jīng)存在,則以某種方式修改該鍵的值;如果某個鍵不存在,則添加對應(yīng)鍵值對。

這種算法非常常見,你可以用collects模塊的defaultdict()函數(shù)來實(shí)現(xiàn)同樣效果:

fromcollectionsimportdefaultdict

items_by_id=defaultdict(list)

consolidated_list=[('a',1),('b',2),('c',3),('b',4)]

forid_,iteminconsolidated_list:

items_by_id[id_].append(item)

在此列中,defaultdict()接受一個list作為參數(shù),當(dāng)鍵不存在時,則返回一個空列表作為對應(yīng)值。

有時候我們會遇到統(tǒng)計(jì)詞頻的案例,比如:

#統(tǒng)計(jì)詞頻

colors=['red','blue','red','green','blue','blue']

result={}

forcolorincolors:

ifresult.get(color)==None:

result[color]=1

else:

result[color]+=1

print(result)

#輸出{'red':2,'blue':3,'green':1}

完全可以用defaultdict()函數(shù)實(shí)現(xiàn)上面的計(jì)數(shù)功能:

colors=['red','blue','red','green','blue','blue']

d=defaultdict(int)

forcolorincolors:

d[color]+=1

print(d)

更簡單的方法用collections模塊的Counter()函數(shù):

fromcollectionsimportCounter

colors=['red','blue','red','green','blue','blue']

c=Counter(colors)

print(dict(c))

對于備份文件,新人往往會用system模塊:

fromosimportsystem

system("xcopye:\\sample.csve:\\newfile\\")

其實(shí)shutil模塊更好用:

importshutil

shutil.copyfile('E:\\q.csv','e:\\movie\\q.csv')

因?yàn)閟hutil會很詳細(xì)地報(bào)告錯誤和異常。

04.不喜歡使用異常處理

無論老手新手都應(yīng)該在寫代碼的時候進(jìn)行異常處理操作,這樣可以使代碼更加健壯。異常處理一般會用try…except語句。

05.:不喜歡使用生成器

除非你的list十分復(fù)雜,并且頻繁調(diào)用,否則都建議使用生成器,因?yàn)樗浅9?jié)省內(nèi)存,舉個例子:

defpowers_of_two(max=20000):

i=0

powers=[]

while2**i

powers.append[2**i]

i+=1

returnpowers

對于使用次數(shù)少、占據(jù)大量內(nèi)存、且容易生成的數(shù)據(jù),可以用生成器替代列表存儲:

fromitertoolsimportcount,takewhile

defpowers_of_two(max=20000):

forindexintakewhile(lambdai:2**i

yield2**index

以上內(nèi)容為大家介紹了Python新手的五大坑,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.e7g2kmi.cn/

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
韩国毛片 免费| 久久精品道一区二区三区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美18性精品| 日韩免费片| 国产不卡精品一区二区三区| 国产麻豆精品视频| 日韩字幕在线| 久久精品店| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日韩免费在线视频| 欧美1区| 高清一级毛片一本到免费观看| 国产成人欧美一区二区三区的| 韩国三级香港三级日本三级la| 日本在线不卡视频| 黄色免费三级| 天天做日日爱| 黄视频网站免费看| 精品国产香蕉在线播出| 天天色色色| 毛片电影网| 精品在线观看国产| 日本乱中文字幕系列| 成人在免费观看视频国产| 精品国产三级a∨在线观看| 一级女性全黄生活片免费| 国产一区二区精品在线观看| 成人高清视频免费观看| 美女免费精品视频在线观看| 黄视频网站在线免费观看| 国产成+人+综合+亚洲不卡| 韩国三级香港三级日本三级| 欧美大片毛片aaa免费看| 九九精品在线播放| 国产一区二区精品| 日韩字幕在线| 精品视频在线观看免费| 精品久久久久久影院免费| 国产网站在线| 青青久在线视频| 免费国产一级特黄aa大片在线| 黄色免费网站在线| 青青久在线视频| 久久久久久久久综合影视网| 日本免费乱理伦片在线观看2018| 91麻豆爱豆果冻天美星空| 麻豆污视频| 香蕉视频一级| 青青青草影院 | 九九干| 欧美另类videosbestsex久久| 青青久久国产成人免费网站| 香蕉视频三级| 青青青草影院 | 欧美另类videosbestsex视频| 欧美日本韩国| 国产不卡在线看| 精品国产亚一区二区三区| 精品国产三级a∨在线观看| 国产伦理精品| 久久99中文字幕| 午夜在线影院| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 美女免费黄网站| 一本伊大人香蕉高清在线观看| 日韩av片免费播放| 成人a级高清视频在线观看| 欧美国产日韩在线| 成人a大片高清在线观看| 二级特黄绝大片免费视频大片| 一级毛片视频免费| 久久国产影院| 免费毛片基地| 亚久久伊人精品青青草原2020| 九九精品久久| 国产一区二区福利久久| 欧美a级成人淫片免费看| 欧美a免费| 一本伊大人香蕉高清在线观看| 国产国产人免费视频成69堂| 国产高清在线精品一区a| 香蕉视频三级| 日韩中文字幕在线观看视频| 国产高清视频免费| 国产国产人免费视频成69堂| 国产成+人+综合+亚洲不卡| 国产视频网站在线观看| 香蕉视频一级| 国产一级生活片| 日韩在线观看视频网站| 日本特黄特黄aaaaa大片| 高清一级片| 二级特黄绝大片免费视频大片| 亚洲女初尝黑人巨高清在线观看| 国产不卡在线观看视频| 99久久精品国产片| 成人高清护士在线播放| 欧美一级视频免费观看| 香蕉视频一级| 中文字幕一区二区三区精彩视频 | 精品毛片视频| 国产成a人片在线观看视频| 九九久久99综合一区二区| 久久久久久久久综合影视网| 久草免费在线观看| 九九久久99综合一区二区| 精品久久久久久中文字幕一区 | 国产视频一区在线| 日本特黄特色aaa大片免费| 精品国产一区二区三区久 | 久久国产精品自由自在| 国产不卡在线播放| 国产麻豆精品hdvideoss| 天天做人人爱夜夜爽2020毛片| 黄色免费网站在线| 国产国产人免费视频成69堂| 精品国产三级a| 日韩欧美一二三区| 91麻豆精品国产自产在线观看一区| 国产视频久久久久| 国产福利免费观看| 高清一级做a爱过程不卡视频| 成人免费观看的视频黄页| 国产福利免费观看| 精品国产香蕉在线播出| 可以在线看黄的网站| 国产不卡高清在线观看视频| 日日日夜夜操| 黄视频网站免费观看| 日本在线不卡视频| 香蕉视频三级| 青青久久国产成人免费网站| 成人影院一区二区三区| a级黄色毛片免费播放视频| 国产综合91天堂亚洲国产| 日本特黄一级| 黄色福利| 欧美日本二区| 日韩av片免费播放| 一级片片| 久久国产影视免费精品| 九九热国产视频| 国产美女在线一区二区三区| 国产亚洲精品成人a在线| a级黄色毛片免费播放视频| 国产成人欧美一区二区三区的| a级毛片免费观看网站| 精品视频在线看| 欧美a级大片| 国产美女在线一区二区三区| 精品视频在线看| 日韩在线观看视频黄| 成人高清护士在线播放| 日日日夜夜操| 91麻豆精品国产片在线观看| 国产成人精品影视| 成人高清视频在线观看| 成人高清护士在线播放| 日韩中文字幕在线亚洲一区| 亚欧成人毛片一区二区三区四区| 色综合久久天天综合| 中文字幕Aⅴ资源网| 尤物视频网站在线| 成人高清免费| 久久久成人网| 美女免费精品高清毛片在线视| 日韩一级黄色| 日本伦理片网站| 欧美激情伊人| 韩国妈妈的朋友在线播放| 精品国产香蕉伊思人在线又爽又黄| 国产成人啪精品视频免费软件| 色综合久久天天综线观看| 成人a大片高清在线观看| 亚洲精品影院久久久久久| 九九九在线视频| 国产激情视频在线观看| 亚洲精品永久一区| 欧美激情一区二区三区视频 | 精品久久久久久综合网| 国产成人啪精品| 欧美激情一区二区三区中文字幕| a级精品九九九大片免费看| 欧美激情一区二区三区视频高清| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩一级黄色| 青青青草影院 | 国产综合成人观看在线| 欧美日本免费| 精品视频在线观看一区二区| 久久精品大片| 亚洲天堂在线播放| 国产亚洲免费观看| a级黄色毛片免费播放视频| 国产成人女人在线视频观看 | 国产精品123| 精品久久久久久免费影院| 国产一区精品| 夜夜操天天爽|