python列表從低到高 Python列表高階

2021-10-11 15:10:00 字數 4110 閱讀 5736

在 python 中,列表是一種有序的集合,可以儲存 0 到多個不同類似的元素。定義乙個列表,我們需要用中括號把裡面的元素包裹起來,並且用 英文逗號分隔。

在列表元素的查詢上,我們可以通過索引來獲取我們想要的元素。 列表的索引分為正向索引和反向索引。正向索引從0開始,反向索引從-1開始。

列表的修改上,我們使用列表[索引] = 新值的方法修改對應位置的元素。

列表元素的刪除

pop() 的功能是:返回列表指定位置的元素,並刪除這個元素。 pop() 可以傳入乙個引數,表示要刪除的元素的索引,如果不傳入,就預設為最後乙個元素的索引。

舉乙個例子,有乙個14人的列表作為大觀園課堂上課的花名冊

students = ['林黛玉', '薛寶釵', '賈元春', '賈探春', '史湘雲','妙玉',

'賈迎春', '賈惜春', '王熙鳳', '賈璉','賈巧姐','李紈', '秦可卿', '賈寶玉']

寶玉他和林妹妹鬧了點小矛盾,因而心情低落,上課也不好好聽了。你在講台上說得酣暢淋漓,他卻在課桌上神遊太虛,這讓你甚為火大,於是你打算讓寶玉罰站,並讓他下節課不准來上課。我們需要從列表中刪除寶玉這個元素。寶玉恰好是名單上的最後乙個名字,所以我們可以這樣操作:

students.pop()

# 下面來驗證操作過後的名單

print(len(students)) # len() 函式用於獲取序列的元素個數

# 輸出:13

以上的**中,第一行 pop() 括號內也可以填上寶玉的索引,寫成 students.pop(13),這兩種寫法是等價的,螢幕上都會列印出賈寶玉的名字,而 students 的名單上變為 13 個人。需要注意的是pop()會將刪除的元素值返回。

可以定義變數 punished ,用來捕獲 pop() 方法返回並刪除的元素後再進行操作。下面我們重新來操作懲罰寶玉前的 14 人花名冊:

punished = students.pop()

print('被罰站的人是:' + punished + ',同學們引以為戒。')

# 輸出:被罰站的人是:賈寶玉,同學們引以為戒。

這時黛玉來找老師您請假,她氣色不佳,原來是染了風寒,下一節課也不能來了。你讓黛玉好好回去休息。不過這次,就不用把名字公示出來了。那麼我們可以使用更加便捷的 del 語句來操作列表,格式為:del 列表[索引]。

「del」是單詞 「delete」(刪除)的縮寫。del 列表[索引] 意思就是「刪除列表中指定索引的元素」。這裡正向和反向索引都是支援的。

我們知道黛玉是列表的第乙個元素,那麼操作方法如下:

# 黛玉索引為 0

del students[0]

# 驗證一下是否成功

print(len(students))

# 輸出:12

remove()方法。通過 列表.remove(值) 的方式,我們可以刪除列表中的特定值。

students.remove('王熙鳳')

# 驗證一下是否成功

print(len(students))

# 輸出:11

分片列表分片用一對以冒號分隔的索引位置表示,格式為 列表[起始索引:結束索引]。比如要獲取 students 中第三到第五個元素,也就是索引為 2,3,4 的元素,就要寫成 students[2:5]。方便計算該分片有5-2=3個元素。

我們發現,擷取前三個元素,就寫成 list[:3];而擷取最後四個元素,就寫成 list[-4:];擷取中間部分 list[a:b],分片長度就是 b - a。這些常用列表操作都極其直觀和簡便。

常用.png

sort() 是乙個很強大的方法,可以對列表內的元素進行排序,直接呼叫 students.sort() 後,python 會使用預設的排序方法對其排序。不同資料型別的排序方法不一樣,我們來看看對字串列表和數值列表進行排序的不同:

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 個字母順序表即可。

數值列表的排序是按照數值大小從小到大進行排序,比如 1 比 2 小,所以 1 在 2 前面。

# reverse() 方法:將列表順序反轉

students = ["林黛玉", "賈寶玉", "薛寶釵"]

students.reverse()

print(students)

# 輸出:['薛寶釵', '賈寶玉', '林黛玉']

# copy() 方法:複製乙個同樣的列表

students1 = ["林黛玉", "賈寶玉", "薛寶釵"]

students2 = students1.copy()

print(students2)

# 輸出:['林黛玉', '賈寶玉', '薛寶釵']

# clear() 方法:清空列表

students = ["林黛玉", "賈寶玉", "薛寶釵"]

students.clear()

print(students)

# 輸出:

students1 = ["林黛玉", "賈寶玉", "薛寶釵"]

students2 = students1

students1[0] = '襲人'

print(students2)

# 輸出:['襲人', '賈寶玉', '薛寶釵']

可以看到,我們明明只改了列表 students1 的元素,students2 卻也跟著變了!所以,我們可以知道,students2 = students1 並不是複製乙個列表,而是給原先的列表乙個新的稱號 students2。copy() 方法不同之處在於,它會新建乙個 students2 的列表,裡面放著和 students1 一樣的內容,彼此互不干擾。

clear() 方法也是類似的,直接使用 students = 並不是將原來的列表清空,而是將「students」這個名稱冠到乙個新建的空列表上,clear() 方法是直接對原來的那個列表進行操作。

students1 = students 操作後,兩者其實是同一列表的不同名字,對任意乙個列表的操作都會影響另乙個。

下面是練習題部分:

1.剛剛聽班主任講她看到幾門考試的倒數三名裡都有賈寶玉和秦可卿,我們來統計賈寶玉和秦可卿他們到底在幾門課裡是倒數前三呢?

要求: 在螢幕上分別列印出:

賈寶玉排在倒數三名的次數是 ***

秦可卿排在倒數三名的次數是 ***

code_ranks = [

'賈惜春', '賈巧姐', '李紈',

'秦可卿', '史湘雲', '王熙鳳',

'薛寶釵', '林黛玉', '妙玉',

'賈迎春', '賈寶玉', '探春'

chinese_ranks = [

'林黛玉', '薛寶釵', '賈寶玉',

'賈探春', '史湘雲', '賈迎春',

'賈惜春', '王熙鳳', '賈巧姐',

'李紈', '妙玉', '秦可卿'

math_ranks = [

'王熙鳳', '賈迎春', '妙玉',

'林黛玉', '賈惜春', '賈巧姐',

'賈探春', '史湘雲', '秦可卿',

'李紈', '薛寶釵', '賈寶玉'

# 定義函式,計算某個學生出現在倒數三名的總次數

def last_three(student):

time1=code_ranks[-3:].count(student)

time2=chinese_ranks[-3:].count(student)

time3=math_ranks[-3:].count(student)

total=time1+time2+time3

return total

print('賈寶玉排在倒數三名的次數是',last_three("賈寶玉"))

print('秦可卿排在倒數三名的次數是',last_three("秦可卿"))

賈寶玉排在倒數三名的次數是 2

秦可卿排在倒數三名的次數是 1

python從低到高排序 經典氣泡排序 由低到高

氣泡排序 據說是八大排序中的其一,通俗的意思就是講,在一組資料中,相鄰元素依次比較大小,最大的放後面,最小的冒上來 我這裡簡單畫了乙個圖,不算流程,但裡面有分析過程 1 確定第1個數的位置 依次與其它資料相比 第1次和2相比,比2大,則右移1位到2的位置上,這時候,1在2位置上了 再與3相比,如果比...

python刪除列表元素 Python列表元素分組

比如列表 0,0,0,1,1,2,3,3,3,2,3,3,0,0 分割成 0,0,0 1,1 2 3,3,3 2 3,3 0,0 如何解決這樣的問題呢?1 首先說明,如果這樣的題目都不能寫出 原因在基本的迴圈判斷沒有搞清楚。2 黃哥在如何訓練自己的程式設計思路 文章所說的,做習題,要像開發專案的流程...

python列表學習 python列表學習整理

list1 列表 是一種有序的集合,可以隨時新增和刪除其中的元素。list1 lily lucy peter abel 列印列表 print list1 遍歷列表 end 迴圈中不換行print x,end for x in list1 print x 列表個數 print len list1 列表...