如果您想學(xué)習(xí)如何在Python中高效地創(chuàng)建一個(gè)空列表,首先我們先來(lái)學(xué)習(xí)如何使用方括號(hào)創(chuàng)建空列表[],然后學(xué)習(xí)如何使用創(chuàng)建空列表list(),在然后學(xué)習(xí)他們的用例,它們的效率(一個(gè)比另一個(gè)快!);我們將使用該timeit模塊進(jìn)行比較。
使用方括號(hào)
您可以使用一對(duì)空的方括號(hào)創(chuàng)建一個(gè)空列表,如下所示:
提示:我們將空列表分配給變量,以便稍后在程序中使用它。
例如:
num = []
空列表的長(zhǎng)度0為,您可以在此處看到:
>>> num = []
>>> len(num)
0
空列表是虛假的值,這意味著它們False在布爾上下文中求值:
>>> num = []>>> bool(num)False
將元素添加到空列表
您可以使用方法元素添加到一個(gè)空列表append()和insert():
· append() 將元素添加到列表的末尾。
· insert() 將元素添加到您選擇的列表的特定索引處。
由于列表可以是真實(shí)值或虛假值,具體取決于它們?cè)谠u(píng)估時(shí)是否為空,因此可以在如下條件中使用它們:
if num:
print("This list is not empty")else:
print("This list is empty")
此代碼的輸出是:
This list is empty
由于列表為空,因此其值為False。
一般來(lái)說(shuō):
· 如果列表不為空,則結(jié)果為True,因此將執(zhí)行if子句。
· 如果列表為空,則結(jié)果為False,因此執(zhí)行else子句。
例:
在下面的示例中,我們創(chuàng)建一個(gè)空列表并將其分配給變量num。然后,使用for循環(huán),將一系列元素(整數(shù))添加到最初為空的列表中:
>>> num = []>>> for i in range(3, 15, 2):
num.append(i)
我們檢查變量的值以查看是否成功添加了項(xiàng)目,并確認(rèn)列表不再為空:
>>> num[3, 5, 7, 9, 11, 13]
提示:我們通常用于append()將第一個(gè)元素添加到一個(gè)空列表中,但是您也可以添加insert()使用index 調(diào)用該方法的該元素0:
>>> num = []>>> num.insert(0, 1.5) # add the float 1.5 at index 0>>> num[1.5]
使用list()構(gòu)造函數(shù)
或者,您可以使用構(gòu)造函數(shù)類型創(chuàng)建一個(gè)空列表,該類型list()將創(chuàng)建一個(gè)新的列表對(duì)象。
根據(jù)Python文檔:
如果未提供任何參數(shù),則構(gòu)造函數(shù)將創(chuàng)建一個(gè)新的空列表[]。
提示:這在內(nèi)存中創(chuàng)建一個(gè)新的列表對(duì)象,因?yàn)槲覀儧](méi)有帶任何參數(shù)list(),將創(chuàng)建一個(gè)空的列表。
例如:
num = list()
0您可以在此處看到此空列表的長(zhǎng)度,即:
>>> num = list()
>>> len(num)
0
當(dāng)它為空時(shí),它是一個(gè)偽造的值(False在布爾上下文中求值):
>>> num = list()>>> bool(num)False
例:
這是一個(gè)功能齊全的列表,因此我們可以向其中添加元素:
>>> num = list()>>> for i in range(3, 15, 2):
num.append(i)
結(jié)果將是一個(gè)非空列表,正如您在此處看到的那樣:
>>> num[3, 5, 7, 9, 11, 13]
用例
· 我們通常使用list()現(xiàn)有的可迭代對(duì)象(例如字符串,字典或元組)來(lái)創(chuàng)建列表。
· 您通常會(huì)看到方括號(hào)[]用于在Python中創(chuàng)建空列表,因?yàn)榇苏Z(yǔ)法更簡(jiǎn)潔,更快捷。
效率
等待!我只是告訴你,這[]比list()... 快
但是要快多少?
讓我們使用timeit模塊檢查它們的時(shí)間效率。
要在您的Python程序中使用此模塊,您需要將其導(dǎo)入:
>>> import timeit
具體來(lái)說(shuō),我們將使用此模塊中的timeit函數(shù),您可以使用以下語(yǔ)法調(diào)用該函數(shù):
提示:該代碼重復(fù)了幾次,以減少由于外部因素(例如在特定時(shí)刻可能正在運(yùn)行的其他進(jìn)程)而引起的時(shí)間差異。這使得結(jié)果更加可靠,可用于比較。
marks 在您的標(biāo)記上...準(zhǔn)備好...準(zhǔn)備好了!這是代碼和輸出:
首先,我們導(dǎo)入模塊。
>>> import timeit
然后,我們開(kāi)始測(cè)試每種語(yǔ)法。
測(cè)試[]:
>>> timeit.timeit('[]', number=10**4)0.0008467000000109692
測(cè)試list():
>>> timeit.timeit('list()', number=10**4)0.002867799999989984
提示:請(qǐng)注意,要計(jì)時(shí)的代碼必須用單引號(hào)''或雙引號(hào)引起來(lái)""。timeit函數(shù)返回的時(shí)間以秒為單位。
比較這些結(jié)果:
· []: 0.0008467000000109692
· list(): 0.002867799999989984
您會(huì)看到這[]比快得多l(xiāng)ist()。0.002此測(cè)試大約相差幾秒鐘:
>>> 0.002867799999989984 - 0.00084670000001096920.0020210999999790147
我敢肯定,您現(xiàn)在必須問(wèn)這個(gè)問(wèn)題:為什么list()效率不如[]做完全相同的事情?
嗯... list()比較慢,因?yàn)樗枰檎以摵瘮?shù)的名稱,然后調(diào)用它,然后在內(nèi)存中創(chuàng)建列表對(duì)象。相反,[]就像“快捷方式”,不需要太多的中間步驟即可在內(nèi)存中創(chuàng)建列表。
這種時(shí)間差異不會(huì)對(duì)程序的性能產(chǎn)生很大的影響,但是很高興知道哪一個(gè)效率更高以及它們?cè)诤笈_(tái)如何工作。
您可以使用一對(duì)空的方括號(hào)[]或類型構(gòu)造函數(shù)list()(一個(gè)內(nèi)置函數(shù),當(dāng)不傳遞任何參數(shù)時(shí)創(chuàng)建一個(gè)空列表)來(lái)創(chuàng)建一個(gè)空列表。方括號(hào)[]通常在Python中用于創(chuàng)建空列表,因?yàn)樗欤?jiǎn)潔。
通過(guò)上述介紹,如何在Python中創(chuàng)建空列表相信大家已經(jīng)清楚了吧,想了解更多關(guān)于Python的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。