列表是python中的一個(gè)序列。list的字典含義是“連續(xù)寫或打印的許多連接項(xiàng)目或名稱”。它的字典含義和在編寫程序時(shí)在Python中的用法沒(méi)有太大區(qū)別。我們經(jīng)常使用列表,無(wú)論是在日常生活中,還是在程序中。每當(dāng)我們要根據(jù)某些條件對(duì)某些項(xiàng)目進(jìn)行分組時(shí),我們都會(huì)列出清單。Python列表提供了相同的功能,您可以靈活地對(duì)每個(gè)元素進(jìn)行隨機(jī)訪問(wèn),修改每個(gè)元素,從中添加或刪除元素來(lái)對(duì)項(xiàng)目進(jìn)行分組。因此,讓我們從創(chuàng)建列表開(kāi)始。
list1 = [1,2,3,4,5]>>> list1
[1, 2, 3, 4, 5]>>> type(list1)
type()是python中的一個(gè)函數(shù),它返回變量的對(duì)象類型。
在python中創(chuàng)建列表非常簡(jiǎn)單。您可以通過(guò)2種方式來(lái)實(shí)現(xiàn)。第一個(gè)是將元素括在方括號(hào)中,如上例所示。其他正在使用list()函數(shù)。
>>> list1 = list([1,2,3,4,5])>>> list1
[1, 2, 3, 4, 5]>>> type(list1)
關(guān)于列表的一件有趣的事情是,它們將對(duì)對(duì)象或元素的引用存儲(chǔ)在其中。因此,在將列表重新分配給另一個(gè)變量時(shí),python只會(huì)更改引用,而不會(huì)創(chuàng)建新的列表對(duì)象。
# id() function returns the object id.>>> id(list1)4426491160>>> list2 = list1>>> id(list2)4426491160
我們可以看到兩個(gè)變量代表相同的對(duì)象。這確實(shí)加快了程序的執(zhí)行速度。列表是全局變量,這意味著當(dāng)您聲明列表并將其作為參數(shù)傳遞給函數(shù)時(shí),而不是將其復(fù)制并傳遞給函數(shù)時(shí),python會(huì)將對(duì)列表的引用傳遞給它。
訪問(wèn)元素
Python為從0開(kāi)始的每個(gè)列表元素分配一個(gè)索引。因此,如果要訪問(wèn)列表中的特定元素,可以通過(guò)其索引訪問(wèn)它。但是為此,您應(yīng)該知道元素的索引。即使您不知道,也不必?fù)?dān)心有一種解決方案。但是,現(xiàn)在讓我們嘗試按其索引訪問(wèn)元素。
>>> list1
[1, 2, 3, 4, 5]>>> print(list1[0])1>>> print(list1[2])3>>> print(list1[1])2
如果傳遞的索引與列表不相關(guān)或該索引中沒(méi)有元素,則該列表將引發(fā)IndexError。
>>> list1
[1, 2, 3, 4, 5]>>> print(list1[9])
Traceback (most recent call last):
File "", line 1, in
IndexError: list index out of range
>>>
在某些情況下,您知道要訪問(wèn)的元素,但不知道其索引。在這種情況下,您可以在相應(yīng)列表中搜索該元素,然后搜索(如果有列表,則使用index函數(shù))將返回該元素的索引。
>>> list1
[1, 2, 3, 4, 5]>>> list1.index(2)1 // index of 2
List的可變行為。
列表數(shù)據(jù)類型屬于“可變數(shù)據(jù)結(jié)構(gòu)”類別。可變意味著您甚至可以在定義數(shù)據(jù)結(jié)構(gòu)后對(duì)其進(jìn)行任何更改。那么,您可以對(duì)列表進(jìn)行哪些更改?您可以更新元素,添加新元素和刪除元素。讓我們看看。
更新列表元素
>>> list1
[1, 2, 3, 4, 5]>>> list1[0] = 2>>> list1
[2, 2, 3, 4, 5]
刪除列表元素
>>> list1
[2, 2, 3, 4, 5]>>> list1.remove(5) #remove element 5>>> list1
[2, 2, 3, 4]
更新和刪除元素既簡(jiǎn)單又直接。現(xiàn)在,當(dāng)涉及到將元素添加到列表時(shí),有很多方法可以做到這一點(diǎn)。所有這一切都取決于您要在何處添加元素。其中之一是使用insert()函數(shù)。
插入元素
list.insert(index,value)帶有2個(gè)參數(shù)。第一個(gè)是要添加元素的位置,第二個(gè)是元素或值本身
>>> list1
[2, 2, 3, 4]>>> list1.insert(4,89)>>> list1
[2, 2, 3, 4, 89] #inserting 89 at 4th index.
如果您提供的索引比列表大小大得多怎么辦?好吧,在這種情況下,列表會(huì)將元素添加到其最后一個(gè)索引。
>>> list1
[2, 2, 3, 4, 89]>>> list1.insert(100000,100)>>> list1
[2, 2, 3, 4, 89, 100]
除了插入之外,還可以使用append()將元素添加到列表的末尾。
>>> list1 = [2, 2, 3, 4, 89, 100]>>> list1.append(67)>>> list1
[2, 2, 3, 4, 89, 100, 67]
我們已經(jīng)看到了帶有列表的基本CRUD操作。該列表具有許多內(nèi)置功能。我們不會(huì)涵蓋所有這些內(nèi)容。
不可變數(shù)據(jù)結(jié)構(gòu)列表
我們可以有一個(gè)元組列表嗎?元組是不可變的對(duì)象,列表是可變的對(duì)象。那么,如果我們聲明一個(gè)元組列表,它將變得可變嗎?讓我們檢查一下。
>>> list1.insert(6,("element1","element2"))>>> list1
[2, 2, 3, 4, 89, 100, ('element1', 'element2')]>>> type(list1)
>>> type(list1[6])
>>> list1[6][0]=3
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment
因此,即使將不可變的對(duì)象存儲(chǔ)在列表中,python也不會(huì)更改對(duì)象的屬性。
列表可以具有任何數(shù)據(jù)類型作為其成員,無(wú)論它是字典,元組,字符串還是其他列表。這是程序員如此頻繁使用列表的原因之一。
有更多關(guān)于列表的知識(shí)。一旦開(kāi)始使用列表,您將學(xué)到這一點(diǎn)。但是,基本知識(shí)對(duì)于學(xué)習(xí)高級(jí)用法總是必不可少的。我已經(jīng)在這里介紹了基本原理。如果您了解這些CRUD操作,則可以學(xué)習(xí)列表的高級(jí)用法。想了解更多關(guān)于python的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。