Python列表增刪改查

在列表末尾添加一個元素:
列表.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”作為英文單詞篷就,除了我們熟悉的“流行”的意思射亏,還能表示“氣泡冒出水面”近忙。我們想象一下水中的氣泡冒出水面的樣子:氣泡一個個離開水下的位置竭业,冒到水面讓大家看到。

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)行操作盅抚。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市倔矾,隨后出現(xiàn)的幾起案子妄均,更是在濱河造成了極大的恐慌,老刑警劉巖哪自,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丰包,死亡現(xiàn)場離奇詭異,居然都是意外死亡壤巷,警方通過查閱死者的電腦和手機(jī)邑彪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胧华,“玉大人锌蓄,你說我怎么就攤上這事〕湃幔” “怎么了瘸爽?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長铅忿。 經(jīng)常有香客問我剪决,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任柑潦,我火速辦了婚禮享言,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘渗鬼。我一直安慰自己览露,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布譬胎。 她就那樣靜靜地躺著差牛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪堰乔。 梳的紋絲不亂的頭發(fā)上偏化,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音镐侯,去河邊找鬼侦讨。 笑死,一個胖子當(dāng)著我的面吹牛苟翻,可吹牛的內(nèi)容都是我干的韵卤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼崇猫,長吁一口氣:“原來是場噩夢啊……” “哼怜俐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起邓尤,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤拍鲤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后汞扎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體季稳,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年澈魄,在試婚紗的時候發(fā)現(xiàn)自己被綠了景鼠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡痹扇,死狀恐怖铛漓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鲫构,我是刑警寧澤浓恶,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站结笨,受9級特大地震影響包晰,放射性物質(zhì)發(fā)生泄漏湿镀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一伐憾、第九天 我趴在偏房一處隱蔽的房頂上張望勉痴。 院中可真熱鬧,春花似錦树肃、人聲如沸蒸矛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雏掠。三九已至,卻和暖如春筛谚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背停忿。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工驾讲, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人席赂。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓吮铭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親颅停。 傳聞我的和親對象是個殘疾皇子谓晌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容