溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

初學(xué)者怎么使用Python

發(fā)布時(shí)間:2021-10-29 16:33:19 來(lái)源:億速云 閱讀:140 作者:iii 欄目:編程語(yǔ)言

這篇文章主要講解了“初學(xué)者怎么使用Python”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“初學(xué)者怎么使用Python”吧!

1. 使用列表時(shí)

列表允許存儲(chǔ)各種數(shù)據(jù)類型的元素且不限制大小,盡管這種靈活性使列表成為收集數(shù)據(jù)的首選,但實(shí)際上仍有一些使用和不使用它的最佳實(shí)踐情景。

在存儲(chǔ)具有相同性質(zhì)(數(shù)據(jù)類型和含義)的元素時(shí),應(yīng)該使用列表。Python不會(huì)通過(guò)編程來(lái)限制這一點(diǎn),在列表中存儲(chǔ)單個(gè)自然項(xiàng)讓開(kāi)發(fā)人員的工作更輕松。開(kāi)發(fā)人員很容易預(yù)測(cè)將來(lái)列表會(huì)有哪些項(xiàng),并確信地編寫(xiě)腳本。

思考下面的物品列表。這個(gè)列表并不包含單一性質(zhì)的項(xiàng)目,開(kāi)發(fā)人員無(wú)法確定該列表是否包含房屋部件、尺寸或其他東西,因此他應(yīng)該分別處理不同的項(xiàng)目:

list_of_things = ['Door', 2,'Window', True, [2.3, 1.4])]

思考下面的水果列表和分?jǐn)?shù)列表。從前兩個(gè)項(xiàng)目中,你很容易推斷出第一個(gè)列表會(huì)始終包含水果名字,而第二個(gè)列表始終包含分?jǐn)?shù)值:

list_of_fruits = ['apple','orange', 'pear', 'cherry', 'banana'] list_of_scores = [80, 98, 50, 55, 100]

在存儲(chǔ)具有不同含義或數(shù)據(jù)類型的項(xiàng)目時(shí),使用元組更合適。元組不具備在不創(chuàng)建新對(duì)象的情況下,提供存儲(chǔ)不受限項(xiàng)目的靈活性(因?yàn)樵M是不可變的)。

2. 迭代連接字符串時(shí)

在Python中所有東西都是對(duì)象,包括可變和不可變對(duì)象。每當(dāng)更新分配給對(duì)象的值時(shí),不可變對(duì)象需創(chuàng)建新對(duì)象,而可變對(duì)象則不需要。

假設(shè)你想在一個(gè)字符串中生成整個(gè)字母表。因?yàn)樽址遣豢勺儗?duì)象,所以每當(dāng)使用“+”運(yùn)算符連接字符串值時(shí),就會(huì)得到一個(gè)新的對(duì)象。

one_line_alphabet = '' for letter_index in range(ord('a'), ord('z')):     one_line_alphabet +=chr(letter_index)

Join函數(shù)是連接字符串的首選方法。使用join函數(shù)可將計(jì)算時(shí)間縮短約3倍。在我做的一項(xiàng)測(cè)試中,迭代連接100萬(wàn)個(gè)字符串值耗時(shí)0.135秒,若使用join( )函數(shù)則只需0.044秒。

small_letters = [chr(i) for i inrange(ord('a'), ord('z')+1)] single_line_alphabet = ''.join(small_letters)

因此,需要連接字符串列表時(shí)請(qǐng)使用join函數(shù)。若使用join函數(shù)連接幾個(gè)字符串,這并不會(huì)直觀感受到性能的差異。若要連接幾個(gè)字符串值,請(qǐng)使用.format而不是“+”運(yùn)算符。例如:

name = 'John' surname = 'Doe' full_name = '{name} {surname}'.format(namename=name, surnamesurname=surname)

3. 讀寫(xiě)文件時(shí)

若要使用Python讀寫(xiě)文件,首先需要用內(nèi)置的open函數(shù)打開(kāi)文件。打開(kāi)文件,讀取或?qū)懭雰?nèi)容以及關(guān)閉文件。進(jìn)行操作時(shí),可能會(huì)出現(xiàn)一些問(wèn)題,比如忘記關(guān)閉文件和異常處理失敗。

操作完成后,若忘記關(guān)閉文件會(huì)導(dǎo)致后續(xù)問(wèn)題。比如,如果在寫(xiě)入文件后忘記關(guān)閉該文件,那么寫(xiě)入操作將不會(huì)保存至文件中,并且在文件仍然保持打開(kāi)狀態(tài)時(shí),你將保留在計(jì)算機(jī)中分配的資源。如果在處理文件時(shí),沒(méi)有手動(dòng)處理異常和錯(cuò)誤,那么文件將保持打開(kāi)的狀態(tài)。

f = open(file='file.txt', mode='r') lines = f.readlines() ... f.close()

建議在打開(kāi)文件時(shí)使用with關(guān)鍵字。with是一個(gè)上下文管理器,它能封裝代碼并能確保自動(dòng)處理異常。比如,當(dāng)你讀寫(xiě)文件時(shí),with-body中可能出現(xiàn)的任何故障,都能自動(dòng)處理異常,并且始終保持該文件關(guān)閉。

with open('file.txt') as f:     read_data = f.read()     ...

如果跳過(guò)with時(shí),你需要自己處理一切,關(guān)閉文件和異常處理都得親自處理。with會(huì)讓你的生活更輕松,讓情況得以控制。

4. 跳過(guò)生成器時(shí)

在許多情景中,你需要生成一個(gè)值列表,稍后將在腳本中使用這些值。比如,你需要為前100個(gè)數(shù)字生成所有3個(gè)數(shù)字的組合。

combinations = [] value = 100 for i in range(value):     for j in range(value):         for k in range(value):             combinations.append((i, j,k))

當(dāng)執(zhí)行的命令完成時(shí),列表組合將包含1M元組,每個(gè)元組有3個(gè)整型值。這些值將保存在內(nèi)存中,直到被刪除。使用sys模塊中的getobjectsize函數(shù)檢查對(duì)象大小,結(jié)果為8.29MB。

不再使用列表存儲(chǔ)值并將它們?nèi)勘4嬷羶?nèi)存,可以創(chuàng)建一個(gè)生成器,每當(dāng)你使用它時(shí),將生成1個(gè)組合。這能減少內(nèi)存消耗并提高運(yùn)行速度。

defgenerate_combinations_of_three(value):     for i in range(value):         for j in range(value):             for k in range(value):                 yield (i, j, k)gen =generate_combinations_of_three(100)next(gen) # yields (0, 0, 0) next(gen) # yileds (0, 0, 1) ...

所以,盡可能多地使用生成器。時(shí)刻牢記內(nèi)存容量是有限的,并盡可能優(yōu)化內(nèi)存使用。請(qǐng)使用生成器,特別是在開(kāi)發(fā)可伸縮的解決方案時(shí)。

5. 使用推導(dǎo)式時(shí)

有一些程序員,他任何用Python編寫(xiě)代碼都遵循Python之禪(The Zen of Python)的準(zhǔn)則。如果是使用Python的新手,可能會(huì)傾向于夸大Python之禪的某些觀點(diǎn),而在其他方面避重就輕。

這一點(diǎn)在逐漸了解推導(dǎo)式時(shí)最容易注意到——你傾向于翻譯推導(dǎo)式中的“每一個(gè)”循環(huán)。假設(shè)你有一個(gè)三維的數(shù)字矩陣,你很可能會(huì)想將其平面化。

matrix = [[[ 1, 2, 3 ],            [ 4, 5, 6 ],            [ 7, 8, 9 ]],           [[ 10, 20, 30 ],            [ 40, 50, 60 ],            [ 70, 80, 90 ]]]

使用列表推導(dǎo)式,平面化過(guò)程如下:

flatten_list = [x for sub_matrix inmatrix for row in sub_matrix for                     x in row]

使用循環(huán),平面化過(guò)程如下:

flatten_list = [] for sub_matrix in matrix:     for row in sub_matrix:         for x in row:             flatten_list.append(x)

感謝各位的閱讀,以上就是“初學(xué)者怎么使用Python”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)初學(xué)者怎么使用Python這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI