在列表末尾添加一個元素:
列表.append() 方法會在列表末尾新增一個元素,
在列表中間某個位置插入一個元素
在列表中間某個位置插入一個元素”,要清楚到底是“哪個位置”,以及“什么元素”。這正是 insert() 方法要求的兩個參數(shù)的意義——插入的位置(索引值)赎败,以及新元素內(nèi)容。
students.insert(9, '賈璉')蠢甲。
列表元素的刪除
- pop() 的功能是:返回列表指定位置的元素僵刮,并刪除這個元素。 pop() 可以傳入一個索引鹦牛,表示要刪除的元素的索引搞糕,如果不傳入,就默認(rèn)為最后一個元素的索引曼追。
students = [ '林黛玉', '薛寶釵', '賈元春', '賈探春', '史湘云', '妙玉', '賈迎春',
'賈惜春', '王熙鳳', '賈璉', '賈巧姐', '李紈', '秦可卿', '賈寶玉']
students.pop()
# 下面來驗證操作過后的名單
print(len(students)) # len() 函數(shù)用于獲取序列的元素個數(shù)
# 輸出:13
以上的代碼中窍仰,第一行 pop() 括號內(nèi)也可以填上寶玉的索引,寫成 students.pop(13)礼殊,這兩種寫法是等價的驹吮,都會將寶玉從列表中移除,而 students 的名單上變?yōu)?13 個人晶伦。
大家可能覺得 pop() 方法的功能有點復(fù)雜碟狞,一時難以理解。我們就來聊聊 pop() 方法的由來坝辫。
pop() 方法及舍,就像一個比喻未辆,把列表中的元素比做水里的一個個氣泡,離開水中就是從列表中刪除元素锯玛,冒出“水面”就是將刪除的值返回咐柜,這樣我們就能把它打印到屏幕上啦。
當(dāng)然攘残,我們可以定義一個變量來捕獲這個冒出的“氣泡”拙友,進(jìn)行下一步操作。比如歼郭,你不想光打印出寶玉的名字遗契,還要加工成完整的語句通知大家。這時候就可以定義變量 punished 病曾,用來捕獲 pop() 方法返回并刪除的元素后再進(jìn)行操作牍蜂。下面我們重新來操作懲罰寶玉前的 14 人花名冊:
punished = students.pop()
print('被罰站的人是:' + punished + ',同學(xué)們引以為戒泰涂。')
# 輸出:被罰站的人是:賈寶玉鲫竞,同學(xué)們引以為戒。
del 列表[索引] 意思就是“刪除列表中指定索引的元素”逼蒙。這里正向和反向索引都是支持的从绘。
# 黛玉索引為 0 (刪除黛玉)
del students[0]
# 驗證一下是否成功
print(len(students))
# 輸出:12
通過 列表.remove(值) 的方式,我們可以在列表中找到 第一個 指定的值其做,然后將它刪除顶考。
students.remove('王熙鳳')#(按照值刪除)
# 驗證一下是否成功
print(len(students))
# 輸出:11
分片
列表分片用一對以冒號分隔的索引位置表示,格式為 列表[起始索引:結(jié)束索引]妖泄。比如要獲取 students 中第三到第五個元素驹沿,也就是索引為 2,3蹈胡,4 的元素渊季,就要寫成 students[2:5]。
要特別注意罚渐,不是 students[2:4]却汉!在這里很多同學(xué)會迷惑,老師為什么要多此一舉荷并,把范圍末尾的元素索引往后挪一位呢合砂?
Python 語言在此如此設(shè)計,其實是考慮到我們?nèi)粘?shù)數(shù)的一個漏洞翩伪,所以有意而為之管挟。
問大家一個問題:從 77 數(shù)到到 85拾酝,一共要數(shù)多少個數(shù)字绢陌?
有的同學(xué)可能會直接兩數(shù)相減噪猾,85 - 77 = 8,所以是 8 個數(shù)轻姿!
真的嗎犁珠?仔細(xì)數(shù)數(shù),其實正確算法是 85 - 77 + 1 = 9互亮。
列表的分片犁享,為了方便我們一眼看出這段范圍的長度,主動將結(jié)束索引向后挪了一位豹休。這樣饼疙,students[2:5] 就能明確告訴我們,這段范圍包含了 5 - 2 = 3 個元素慕爬。如果寫成 students[2:4]窑眯,就很不方便我們直接算出范圍長度了。
列表的其他操作:
統(tǒng)計元素出現(xiàn)的次數(shù)
count() 方法可以統(tǒng)計元素在列表中出現(xiàn)的次數(shù)医窿,使用起來很簡單:
students = ['林黛玉', '賈寶玉', '薛寶釵', '賈寶玉']
print(students.count('賈寶玉'))
# 輸出:2
排序
sort() 是一個很強大的方法磅甩,可以對列表內(nèi)的元素進(jìn)行排序,直接調(diào)用 students.sort() 后姥卢,Python 會使用默認(rèn)的排序方法對其排序卷要。不同數(shù)據(jù)類型的排序方法不一樣,我們來看看對字符串列表和數(shù)值列表進(jìn)行排序的不同:
str_list = ["lin", "jia", "xue"]
str_list.sort()
print(str_list)
# 輸出:['jia', 'lin', 'xue']
num_list = [4, 2, 1, 9]
num_list.sort()
print(num_list)
# 輸出:[1, 2, 4, 9]
字符串列表的排序按照每個元素首字母的順序來排序独榴,比如 j 在 l 前面僧叉,l 在 x 前面,可以簡單地按照 26 個字母順序表即可棺榔;
數(shù)值列表的排序是按照數(shù)值大小從小到大進(jìn)行排序瓶堕,比如 1 比 2 小,所以 1 在 2 前面症歇。
反轉(zhuǎn)郎笆、復(fù)制和清空
剩下的 reverse()、copy()忘晤、clear() 方法比較簡單:
# reverse() 方法:將列表順序反轉(zhuǎn)
students = ["林黛玉", "賈寶玉", "薛寶釵"]
students.reverse()
print(students)
# 輸出:['薛寶釵', '賈寶玉', '林黛玉']
# copy() 方法:復(fù)制一個同樣的列表
students1 = ["林黛玉", "賈寶玉", "薛寶釵"]
students2 = students1.copy()
print(students2)
# 輸出:['林黛玉', '賈寶玉', '薛寶釵']
# clear() 方法:清空列表
students = ["林黛玉", "賈寶玉", "薛寶釵"]
students.clear()
print(students)
# 輸出:[]
reverse() 方法在需要倒序輸出列表內(nèi)容時很實用宛蚓。而 copy() 和 clear() 方法你可能比較困惑,直接將 students2 = students1 不就復(fù)制了同樣的列表设塔,直接 students = [] 不就清空了列表了嗎凄吏?為什么還要 copy() 和 clear() 方法。我直接用代碼給你解釋吧!
students1 = ["林黛玉", "賈寶玉", "薛寶釵"]
students2 = students1
students1[0] = '襲人'
print(students2)
# 輸出:['襲人', '賈寶玉', '薛寶釵']
可以看到痕钢,我們明明只改了列表 students1 的元素表谊,students2 卻也跟著變了!所以盖喷,我們可以知道,students2 = students1 并不是復(fù)制一個列表难咕,而是給原先的列表一個新的稱號 students2课梳。
因此,students1 和 students2 只是同一個列表的不同代號余佃,修改 student1 就是修改 student2暮刃,而 copy() 方法不同之處在于,它會新建一個 students2 的列表爆土,里面放著和 students1 一樣的內(nèi)容椭懊,彼此互不干擾。
clear() 方法也是類似的步势,直接使用 students = [] 并不是將原來的列表清空氧猬,而是將“students”這個名稱冠到一個新建的空列表上,而原來的列表失去了自己的代號坏瘩。clear() 方法是直接對原來的那個列表進(jìn)行操作盅抚。