Python實(shí)現(xiàn)向列表或數(shù)組添加元素
Python 中的列表是什么?給初學(xué)者的定義
編程中的數(shù)組是一個(gè)有序的項(xiàng)目集合,所有的項(xiàng)目都需要是相同的數(shù)據(jù)類型。然而,與其它編程語言不同,數(shù)組在 Python 中不是一個(gè)內(nèi)置的數(shù)據(jù)結(jié)構(gòu)。Python 使用列表取代傳統(tǒng)的數(shù)組。
列表本質(zhì)上是動(dòng)態(tài)數(shù)組,是 Python 中最常見的和最強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)之一。你可以把它們想象成有序的容器。它們將同類相關(guān)的數(shù)據(jù)存儲(chǔ)和組織在一起。存儲(chǔ)在一個(gè)列表中的元素可以是任何數(shù)據(jù)類型。可以有整數(shù)列表、浮點(diǎn)數(shù)列表、字符串列表,以及任何其它內(nèi)置 Python 數(shù)據(jù)類型的列表。
盡管列表有可能只容納相同數(shù)據(jù)類型的項(xiàng)目,但它們比傳統(tǒng)的數(shù)組更靈活。這意味著在同一個(gè)列表中可以有各種不同的數(shù)據(jù)類型。列表有 0 個(gè)或更多的項(xiàng)目,這意味著也可以有空的列表。在一個(gè)列表中,也可以有重復(fù)的值。值之間用逗號(hào)隔開,用方括號(hào) [] 把值括起來。
如何在 Python 中創(chuàng)建列表
要?jiǎng)?chuàng)建一個(gè)新的列表,首先給這個(gè)列表起一個(gè)名字。然后添加賦值運(yùn)算符(=)和一對(duì)有開頭和結(jié)尾的方括號(hào)。在方括號(hào)內(nèi)添加你希望列表包含的值。
#創(chuàng)建一個(gè)包含名字的新列表 names = ["Jimmy", "Timmy", "Kenny", "Lenny"] #將列表打印到控制臺(tái) print(names) #輸出 #['Jimmy', 'Timmy', 'Kenny', 'Lenny']
在 Python 中列表是如何被索引的
列表為每個(gè)項(xiàng)目保持一個(gè)順序。
集合中的每個(gè)項(xiàng)目都有一個(gè)自己的索引號(hào),你可以用它來訪問這個(gè)項(xiàng)目本身。
Python(以及其它現(xiàn)代編程語言)中的索引從 0 開始,列表中的每一項(xiàng)的索引逐個(gè)增加。
例如,前面創(chuàng)建的列表有 4 個(gè)值:
names = ["Jimmy", "Timmy", "Kenny", "Lenny"]
- 列表中的第一個(gè)值,“Jimmy”,索引為 0。
- 列表中的第二個(gè)值,“Timmy”,索引為 1。
- 列表中的第三個(gè)值,“Kenny”,索引為 2。
- 列表中的第四個(gè)值,“Lenny”,索引為 3。
要通過索引號(hào)訪問列表中的一個(gè)元素,首先要寫出列表的名稱,然后在方括號(hào)中寫出該元素索引,這是一個(gè)整數(shù)。
例如,如果你想訪問索引為 2 的元素,你應(yīng)該這樣做:
names = ["Jimmy", "Timmy", "Kenny", "Lenny"] print(names[2]) #output #Kenny
Python 中的列表是可變的
在 Python 中,當(dāng)對(duì)象是可變的時(shí)候,這意味著一旦它們被創(chuàng)建,其值就可以被改變。列表是可變的對(duì)象,所以在它們被創(chuàng)建后,你可以更新和改變它們。列表也是動(dòng)態(tài)的,意味著它們可以在程序的整個(gè)生命周期中增長(zhǎng)和縮小。可以從現(xiàn)有的列表中刪除項(xiàng)目,也可以給現(xiàn)有的列表添加新的項(xiàng)目。
有一些內(nèi)置的方法用于從列表中添加和刪除項(xiàng)目。例如,要添加項(xiàng)目,有 .append()、.insert() 和 .extend() 方法。要?jiǎng)h除項(xiàng)目,有 .remove()、.pop() 和 .pop(index) 方法。
.append() 方法的作用
.append() 方法在一個(gè)已經(jīng)存在的列表的末尾添加一個(gè)額外的元素。
語法看起來像這樣:
list_name.append(item)
讓我們把它分解一下:
- list_name 是你給列表起的名字。
- .append() 是列表方法,用于在 list_name 的末尾添加一個(gè)項(xiàng)目。
- item 是你要添加的指定的單獨(dú)項(xiàng)目。
使用 .append() 時(shí),原始列表被修改,不創(chuàng)建新的列表。如果你想在先前創(chuàng)建的列表中添加一個(gè)額外的名字,你可以這樣做:
names = ["Jimmy", "Timmy", "Kenny", "Lenny"] #在列表的末尾添加名字 Dylan names.append("Dylan") print(names) #output #['Jimmy', 'Timmy', 'Kenny', 'Lenny', 'Dylan']
.append() 和 .insert() 方法之間有什么區(qū)別
這兩個(gè)方法的區(qū)別是:.append() 在列表的末尾添加一個(gè)項(xiàng)目,而 .insert() 在列表的指定位置插入一個(gè)項(xiàng)目。正如你在上一節(jié)看到的,.append() 將把你作為參數(shù)傳遞給函數(shù)的項(xiàng)目始終添加到列表的末尾。如果你不想只是將項(xiàng)目添加到列表的末尾,你可以用 .insert() 指定你想添加的位置。
一般的語法是這樣的:
list_name.insert(position,item)
讓我們把它分解一下:
- list_name 是列表的名稱。
- .insert() 是列表方法,用于在列表中插入一個(gè)項(xiàng)目。
- position 是該方法的第一個(gè)參數(shù)。它總是一個(gè)整數(shù)——具體地說,它是你希望新項(xiàng)目被放置的位置的索引號(hào)。
- item 是該方法的第二個(gè)參數(shù)。在這里你指定你想添加到列表中的新項(xiàng)目。
例如,假設(shè)你有以下的編程語言列表:
programming_languages = ["JavaScript", "Java", "C++"] print(programming_languages) #output #['JavaScript', 'Java', 'C++']
如果你想在列表的開始插入 “Python”,作為列表的一個(gè)新項(xiàng),你可以使用 .insert() 方法,并指定位置為 0(記住,列表的第一個(gè)值的索引總是 0)。
programming_languages = ["JavaScript", "Java", "C++"] programming_languages.insert(0, "Python") print(programming_languages) #output #['Python', 'JavaScript', 'Java', 'C++']
如果你想讓 “JavaScript” 成為列表中的第一個(gè)項(xiàng)目,然后添加 “Python” 作為新的項(xiàng)目,你會(huì)指定位置為 1:
programming_languages = ["JavaScript", "Java", "C++"] programming_languages.insert(1,"Python") print(programming_languages) #output #['JavaScript', 'Python', 'Java', 'C++']
與 .append() 方法相比,.insert() 方法給了你更多的靈活性,前者只在列表的末尾添加一個(gè)新項(xiàng)目。
.append() 和 .extend() 方法之間有什么區(qū)別
如果你想一次向列表中添加多個(gè)項(xiàng)目,而不是一次添加一個(gè),怎么辦?
你可以使用 .append() 方法在一個(gè)列表的末尾添加多個(gè)項(xiàng)目。
假設(shè)你有一個(gè)只包含兩種編程語言的列表:
programming_languages = ["JavaScript", "Java"] print(programming_languages) #output #['JavaScript', 'Java']
然后你想在它的最后再增加兩種語言。
在這種情況下,你傳遞一個(gè)包含你想添加的兩個(gè)新值的列表,作為 .append() 的一個(gè)參數(shù):
programming_languages = ["JavaScript", "Java"] #在列表的末尾添加兩個(gè)新項(xiàng)目 programming_languages.append(["Python","C++"]) print(programming_languages) #output #['JavaScript', 'Java', ['Python', 'C++']]
如果你仔細(xì)看看上面的輸出,['JavaScript', 'Java', ['Python', 'C++']],你會(huì)發(fā)現(xiàn)一個(gè)新的列表被添加到已經(jīng)存在的列表的末尾。
所以,.append() 在一個(gè)列表中添加了一個(gè)列表。列表是對(duì)象,當(dāng)你使用 .append() 將另一個(gè)列表添加到一個(gè)列表中時(shí),新的項(xiàng)目將作為一個(gè)單獨(dú)的對(duì)象(項(xiàng)目)被添加。
假設(shè)你已經(jīng)有兩個(gè)列表,像這樣:
names = ["Jimmy", "Timmy"] more_names = ["Kenny", "Lenny"]
如果想把兩個(gè)列表的內(nèi)容合二為一,把 more_names 的內(nèi)容加入到 names 中,會(huì)怎么樣?
當(dāng) .append() 方法被用于此目的時(shí),另一個(gè)列表會(huì)在 names 中被創(chuàng)建:
names = ["Jimmy", "Timmy"] more_names = ["Kenny", "Lenny"] #將 more_names 的內(nèi)容添加到 names names.append(more_names) print(names) #output #['Jimmy', 'Timmy', ['Kenny', 'Lenny']]
所以,.append() 通過將對(duì)象追加到最后,將新的元素作為另一個(gè)列表添加。要真正將列表連接(添加)在一起,并將一個(gè)列表中的所有項(xiàng)目合并到另一個(gè)列表,你需要使用 .extend() 方法。
一般的語法是這樣的:
list_name.extend(iterable/other_list_name)
讓我們把它分解一下:
- list_name 是其中一個(gè)列表的名稱。
- .extend() 是將一個(gè)列表的所有內(nèi)容添加到另一個(gè)列表的方法。
- iterable 可以是任何可迭代的東西,比如另一個(gè)列表,例如 another_list_name。在這種情況下,another_list_name 是一個(gè)列表,它將與 list_name 連接,其內(nèi)容將作為單獨(dú)的項(xiàng)目被逐一添加到 list_name 的末尾。
因此,拿前面的例子來說,當(dāng) .append() 被替換為 .extend() 時(shí),輸出結(jié)果將是這樣的:
names = ["Jimmy", "Timmy"] more_names = ["Kenny", "Lenny"] names.extend(more_names) print(names) #output #['Jimmy', 'Timmy', 'Kenny', 'Lenny']
當(dāng)我們使用 .extend() 時(shí),名字列表得到擴(kuò)展,其長(zhǎng)度增加了 2。
.extend() 的工作方式是,它將一個(gè)列表(或其他可迭代的)作為參數(shù),對(duì)每個(gè)元素進(jìn)行迭代,然后將可迭代的每個(gè)元素添加到列表中。.append() 和 .extend() 之間還有一個(gè)區(qū)別。
當(dāng)你想添加一個(gè)字符串時(shí),如前面所見,.append() 將整個(gè)單一項(xiàng)目添加到列表的末尾:
names = ["Jimmy", "Timmy", "Kenny", "Lenny"] #將名字 Dylan 添加到列表的末尾 names.append("Dylan") print(names) #output #['Jimmy', 'Timmy', 'Kenny', 'Lenny', 'Dylan']
如果你用 .extend() 將一個(gè)字符串添加到一個(gè)列表的末尾,那么字符串中的每個(gè)字符都會(huì)作為一個(gè)單獨(dú)的項(xiàng)目被添加到列表中。
這是因?yàn)樽址强傻?,?.extend() 是對(duì)傳遞給它的可迭代參數(shù)進(jìn)行迭代。
因此,上面的例子看起來將是像這樣的:
names = ["Jimmy", "Timmy", "Kenny", "Lenny"] #給 .extend() 傳遞一個(gè)字符串(可迭代的) names.extend("Dylan") print(names) #output #['Jimmy', 'Timmy', 'Kenny', 'Lenny', 'D', 'y', 'l', 'a', 'n']
總而言之
.append() 方法用于在現(xiàn)有列表的末尾添加一個(gè)項(xiàng)目,而不創(chuàng)建一個(gè)新的列表。
當(dāng)它用于將一個(gè)列表添加到另一個(gè)列表時(shí),它在一個(gè)列表中創(chuàng)建一個(gè)列表。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python3 Tensorlfow:增加或者減小矩陣維度的實(shí)現(xiàn)
這篇文章主要介紹了Python3 Tensorlfow:增加或者減小矩陣維度的實(shí)現(xiàn),具有好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05python+selenium+chrome批量文件下載并自動(dòng)創(chuàng)建文件夾實(shí)例
這篇文章主要介紹了python+selenium+chrome批量文件下載并自動(dòng)創(chuàng)建文件夾實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04python3 pandas 讀取MySQL數(shù)據(jù)和插入的實(shí)例
下面小編就為大家分享一篇python3 pandas 讀取MySQL數(shù)據(jù)和插入的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04Python優(yōu)雅實(shí)現(xiàn)二分查找的示例詳解
二分查找是一種高效的搜索算法,用于在有序數(shù)組中查找特定元素,本文將介紹二分查找的基本原理,并通過Python代碼進(jìn)行詳細(xì)講解,需要的可以參考一下2023-07-07Python3 venv搭建輕量級(jí)虛擬環(huán)境的步驟(圖文)
這篇文章主要介紹了Python3 venv搭建輕量級(jí)虛擬環(huán)境的步驟(圖文),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08