在家做網(wǎng)站目前最火的推廣平臺(tái)
目錄
正向索引:
反向索引:
嵌套列表:
?修改列表中的值
列表常用的方法
實(shí)例
練習(xí):
正向索引:
從0開(kāi)始,依次遞增。第一個(gè)元素的索引為0,第二個(gè)元素的索引為1,依此類(lèi)推。
列表的下標(biāo)索引(正向)
例如:
fruits = ['apple', 'banana', 'cherry']
print(fruits[0]) # 輸出 'apple'
print(fruits[1]) # 輸出 'banana'
反向索引:
從-1開(kāi)始,依次遞減。最后一個(gè)元素的索引為-1,倒數(shù)第二個(gè)元素的索引為-2,以此類(lèi)推。
列表的下標(biāo)索引(反向)
例如:
print(fruits[-1]) # 輸出 'cherry'
print(fruits[-2]) # 輸出 'banana'
嵌套列表:
最底層的列表被標(biāo)記為"元素0"、"元素1"、"元素0"和"元素1",這些元素分別屬于兩個(gè)不同的列表,即"列表(list)"0和"列表(list)"1。這兩個(gè)列表又作為元素存在于最上層的"列表(list)"中。
# 創(chuàng)建一個(gè)嵌套列表
nested_list = [[1, 2], [3, 4]]# 訪(fǎng)問(wèn)嵌套列表中的元素
print(nested_list[0][0]) # 輸出: 1
print(nested_list[0][1]) # 輸出: 2
print(nested_list[1][0]) # 輸出: 3
print(nested_list[1][1]) # 輸出: 4
最底層的列表被標(biāo)記為"元素0"、"元素1"、"元素0"和"元素1",這些元素分別屬于兩個(gè)不同的列表,即"列表(list)"0和"列表(list)"1。這兩個(gè)列表又作為元素存在于最上層的"列表(list)"中。
線(xiàn)性表(常見(jiàn)的線(xiàn)性表-----數(shù)組 棧 隊(duì)列 鏈表) ---- 基于鏈表的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的
注意:python里面是沒(méi)有數(shù)組的 數(shù)組的存儲(chǔ)空間是連續(xù)的,它刪除比較麻煩,因?yàn)閮?nèi)存是連續(xù)的,查詢(xún)速度特別快(因?yàn)槭沁B續(xù)的)-----------增刪改的效率比較低
棧:先進(jìn)后出,后進(jìn)先出
隊(duì)列:先進(jìn)先出,后進(jìn)后出
鏈表(比較特殊的數(shù)據(jù)結(jié)構(gòu)):(只有一個(gè)6byte的空間,但是要存8byte的數(shù)組,肯定是不夠的,所以是有很多零碎的內(nèi)存塊,科學(xué)家就使用線(xiàn)將各種零碎的內(nèi)存塊連接起來(lái))
單向鏈表:節(jié)約內(nèi)存
沒(méi)有頭節(jié)點(diǎn),只有尾節(jié)點(diǎn)
雙向鏈表
一般有三個(gè)節(jié)點(diǎn),第一個(gè)節(jié)點(diǎn)存上一個(gè)節(jié)點(diǎn)的地址(頭指針),中間的存儲(chǔ)數(shù)據(jù),最后一個(gè)存下一個(gè)節(jié)點(diǎn)的內(nèi)存(尾指針)
Python中的列表就是基于雙向鏈表實(shí)現(xiàn)的(查詢(xún)慢,增刪快)
-
定義
由弱數(shù)據(jù)類(lèi)型語(yǔ)言決定,直接賦值給變量
如: ls = [ 2,3,4,5 ]
使用全局函數(shù)list對(duì)列表進(jìn)行定義
ls = list() ?ls = list([1,2,3,4,5,""]) ?#容器中的每一個(gè)值,我們叫做元素
-
如何訪(fǎng)問(wèn)元素
使用下標(biāo)來(lái)訪(fǎng)問(wèn),注意下標(biāo)是從0開(kāi)始的(外國(guó)人喜歡從0開(kāi)始計(jì)數(shù)) ls[0] 如果下標(biāo)超過(guò)范圍會(huì)報(bào)異常, 可以用下標(biāo)來(lái)訪(fǎng)問(wèn)值,也可以修改值,另外下標(biāo)也可以是負(fù)數(shù)
求列表的長(zhǎng)度?
全局函數(shù)len(容器) -----------返回容器的長(zhǎng)度
-
如何遍歷容器
For循環(huán)For i in ls:Print(i) ?While循環(huán)Index = 0While index < len(ls):Print(ls[index])Index += 1
?修改列表中的值
示例 1:修改列表中特定位置的值
假設(shè)有一個(gè)列表,你想修改其中某個(gè)位置的元素。
fruits = ['apple', 'banana', 'cherry'] # 修改索引為1的元素,即把'banana'改為'orange' fruits[1] = 'orange' print(fruits) # 輸出: ['apple', 'orange', 'cherry']
示例 2:遍歷列表并修改所有值
如果想要基于某種條件或運(yùn)算修改列表中的每一個(gè)元素,可以遍歷列表。
numbers = [1, 2, 3, 4, 5] # 將列表中的每個(gè)元素都平方 for i in range(len(numbers)):numbers[i] = numbers[i] ** 2 print(numbers) # 輸出: [1, 4, 9, 16, 25]
或者使用列表推導(dǎo)式更簡(jiǎn)潔地實(shí)現(xiàn)同樣的功能:
numbers = [1, 2, 3, 4, 5] squared_numbers = [x ** 2 for x in numbers] print(squared_numbers) # 輸出: [1, 4, 9, 16, 25]
示例 3:修改嵌套列表中的值
對(duì)于嵌套列表(列表中的列表),你需要通過(guò)兩層索引來(lái)訪(fǎng)問(wèn)和修改內(nèi)部列表的元素。
nested_list = [[1, 2], [3, 4]] # 修改嵌套列表中第二個(gè)列表的第一個(gè)元素 nested_list[1][0] = 'changed' print(nested_list) # 輸出: [[1, 2], ['changed', 4]]
列表常用的方法
方法名 | 含義 |
---|---|
append() | 向列表尾部追加元素 |
insert(index, object) | 向指定的位置追加元素 |
sort() | 列表排序(只能排Int)字母按照ASCII值進(jìn)行排序,類(lèi)型不能混淆 |
index() | 查找元素第一次在列表中出現(xiàn)的位置,如果沒(méi)有這個(gè)元素則會(huì) |
reverse() | 將列表元素順序翻轉(zhuǎn) |
remove() | 通過(guò)元素來(lái)移除元素,如果元素不存在則拋出異常 |
count() | 統(tǒng)計(jì)元素在列表中的個(gè)數(shù) |
clear() | 清除元素 |
copy() | 淺拷貝對(duì)象(拷貝) 不等價(jià)于 = (引用傳遞),在堆內(nèi)存中進(jìn)行對(duì)象拷貝 |
extend() | 合并列表 |
pop() | 與append()相反,刪除列表最后一個(gè)元素,并返回值這個(gè)元素,要?jiǎng)h除指定位置的元素,用pop(i) 方法,其中i 是索引位置 |
實(shí)例
下面是一些關(guān)于如何使用 Python 列表方法的例子:
append()
?方法:向列表尾部追加元素。
my_list = [1, 2, 3]
my_list.append(4) # 添加元素 4 到列表末尾
print(my_list) # 輸出: [1, 2, 3, 4]
insert(index, object)
?方法:向指定的位置追加元素。
my_list = [1, 2, 3, 4, 5]
my_list.insert(2, "new_element") # 在索引 2 的位置插入元素
print(my_list) # 輸出: [1, 2, 'new_element', 3, 4, 5]
sort()
?方法:列表排序(只能排Int)字母按照ASCII值進(jìn)行排序,類(lèi)型不能混淆。
my_list = [5, 1, 9, 3, 7]
my_list.sort() # 對(duì)列表進(jìn)行升序排列
print(my_list) # 輸出: [1, 3, 5, 7, 9]# 注意:對(duì)于非數(shù)字類(lèi)型的元素,需要自定義比較函數(shù)或使用 sorted() 函數(shù)
index(element)
?方法:查找元素第一次在列表中出現(xiàn)的位置,如果沒(méi)有這個(gè)元素則拋出異常。
my_list = [1, 2, 3, 4, 5]
print(my_list.index(3)) # 輸出: 2
reverse()
?方法:將列表元素順序翻轉(zhuǎn)。
my_list = [1, 2, 3, 4, 5]
my_list.reverse()
print(my_list) # 輸出: [5, 4, 3, 2, 1]
remove(element)
?方法:通過(guò)元素來(lái)移除元素,如果元素不存在則拋出異常。
my_list = [1, 2, 3, 4, 5]
my_list.remove(3) # 移除元素 3
print(my_list) # 輸出: [1, 2, 4, 5]
count(element)
?方法:統(tǒng)計(jì)元素在列表中的個(gè)數(shù)。
my_list = [1, 2, 3, 2, 1]
print(my_list.count(2)) # 輸出: 2
clear()
?方法:清除元素。
my_list = [1, 2, 3, 4, 5]
my_list.clear()
print(my_list) # 輸出: []
copy()
?方法:淺拷貝對(duì)象(拷貝)不等于 = (引用傳遞),在堆內(nèi)存中進(jìn)行對(duì)象拷貝。
my_list = [1, 2, 3]
copied_list = my_list.copy()
print(copied_list) # 輸出: [1, 2, 3]
extend(iterable)
?方法:合并列表。
my_list1 = [1, 2, 3]
my_list2 = [4, 5, 6]
my_list1.extend(my_list2)
print(my_list1) # 輸出: [1, 2, 3, 4, 5, 6]
pop([index])
?方法:與append()相反,刪除列表最后一個(gè)元素,并返回值這個(gè)元素,要?jiǎng)h除指定位置的元素,用pop(i)方法,其中i是索引位置。
my_list = [1, 2, 3, 4, 5]
print(my_list.pop()) # 輸出: 5
print(my_list) # 輸出: [1, 2, 3, 4]my_list.pop(2) # 刪除索引為 2 的元素
print(my_list) # 輸出: [1, 2, 4]
練習(xí):
使用Python列表實(shí)現(xiàn)學(xué)生年齡管理
在本篇博客中,我們將探討如何使用Python的列表功能來(lái)處理與學(xué)生年齡相關(guān)的一系列任務(wù)。以下是我們的目標(biāo):
- 定義一個(gè)學(xué)生年齡列表。
- 在列表末尾追加元素。
- 向列表末尾追加另一個(gè)列表。
- 獲取列表的第一個(gè)和最后一個(gè)元素。
- 查找指定元素在列表中的索引位置。
- 對(duì)列表進(jìn)行排序。
初始化一個(gè)包含若干學(xué)生年齡的列表:
student = [21, 25, 21, 23, 22, 20]
模擬新學(xué)生加入班級(jí)的情景,我們使用append()
方法向列表尾部添加一名31歲的學(xué)生年齡:
student.append(31)
print(student) # 輸出當(dāng)前列表狀態(tài)
# 輸出: [21, 25, 21, 23, 22, 20, 31]
如果有多個(gè)學(xué)生同時(shí)加入,可以利用extend()
方法將一個(gè)包含多個(gè)人年齡的列表合并進(jìn)來(lái)。這里,新增了三位學(xué)生,年齡分別為29、33、30歲:
student_new = [29, 33, 30]
student.extend(student_new)
print(student) # 輸出: [21, 25, 21, 23, 22, 20, 31, 29, 33, 30]
在管理過(guò)程中,可能需要移除列表中的元素。這里,分別移除了最年輕(索引為0)和最新加入(索引為-1)的學(xué)生年齡,并打印移除的值:
num = student.pop(0) # 輸出: 21 (移除并打印元素)
print(num)
num = student.pop(-1) # 輸出: 30 (移除并打印元素)
print(num)
為了查找特定學(xué)生年齡的位置,比如剛加入的31歲學(xué)生,我們使用index()
方法獲取其索引:
print(student.index(31)) # 輸出: 6 (顯示31在列表中的索引位置)
最后,為了便于分析或進(jìn)一步處理,對(duì)整個(gè)年齡列表進(jìn)行排序,保持?jǐn)?shù)據(jù)有序:
student.sort()
print(student) # 輸出: [20, 21, 21, 22, 23, 25, 29, 31, 33] (列表按升序排列)