1、對列表進行排序:
(1)使用列表對象的sort()方法:
列表對象提供了sort()方法用於對原列表中的元素進行排序。排序后原列表中的元素順序將發生改變。改變對象的sort()方法的語法格式如下:
listname.sort(key=None,reverse=False)
#listname:表示要進行排序的列表。
#key:表示指定從每個元素中提取一個用於比較的鍵(例如設置”key=str.lower“表示在排序時不區分字母大小寫)
#reverse:可選參數,如果將其指定為True,則表示降序排列;如果為False,則表示升序排列,默認為升序排列。
grade=[74,90,78,84,98,62,75,82] print("原成績:",grade) grade.sort() print("升 序:",grade) grade.sort(reverse=True) print("降 序:",grade)
使用sort()方法進行數值列表的排序比較簡單,但是使用sort()方法對字符串列表進行排序時,采用的規則是先對大寫字母排序,然后再對小寫字母排序。如果不區分大小寫對字符串列表進行排序,需要指定其key參數。
char=["Curry","Bome","deven","ansible"] print("原字符串順序:",char) char.sort() print("默認大寫字母優先排序:",char) #先對大寫字母進行排序,然后再對小寫字母進行排序。 char.sort(key=str.lower) print("不區分大小寫字母排序:",char)
采用sort()方法對列表進行排序時,對中文的支持不好,排序的結果與我們常用的音序排序法或者筆畫排序法都不一致,如果需要實現對中文內容的列表排序,還需要重新編寫相應的方法進行處理,不能直接使用sort()方法。
(2)使用內置的sorted()函數實現:
再Python中,提供了一個內置的sorted()函數,用於對列表進行排序。使用該函數進行排序后,原列表的元素順序不變。
sorted(iterable,key=None,reverse=False)
#iterable:表示要進行排序的列表名稱
#key:表示指定從每個元素中提取一個用於比較的鍵(例如,設置”key=str.lower“表示在排序時不區分字母大小寫)
#reverse:可選參數,如果將其指定為True,則表示降序排列;如果為False,則表示升序排列,默認為升序排列。
num=[97,65,75,78,83,91,73,89] print("原序列:",num) num_as=sorted(num) print("升 序:",num_as) num_des=sorted(num,reverse=True) print("降 序:",num_des)
列表對象的sort()方法和內置sorted()函數的作用基本相同;不同點是在使用sort()方法時,會改變原列表的元素排列順序,而是用sorted()函數時,會建立一個原列表的副本,該副本為排序后的列表。
2、列表推導式:
使用列表推導式可以快速生成一個列表,或者根據某個列表生成滿足指定需求的列表。列表推導式通常有以下幾種常用的語法格式。
(1)生成指定范圍的數值列表,語法格式如下:
list = [Expression for var in range]
#list:表示生成的列表名稱。
#Expression:表達式,用於計算新列表的元素。
#var:循環變量。
#range:采用range()函數生成的range對象。
import random randomnumber=[random.randint(10,100) for i in range(10)] print("生成的隨機數為:",randomnumbe
(2)根據列表生成指定需求的列表,語法格式如下:
newlist = [Expression for var in list]
#newlist:表示新生成的列表名稱
#Expression:表達式,用於計算新列表的元素
#var:變量,值為后面列表的每個元素值
#list:用於生成新列表的原列表
commodity=[80,40,60] print("原商品的價格分別:",commodity) new_commodity=[int(i*0.5) for i in commodity] print("打五折后的價格為:",new_commodity)
(3)從列表中選擇符合條件的元素組成新的列表,語法格式如下:
newlist = [Expression for var in list if condition]
#newlist:表示新生成的列表名稱
#Expression:表達式,用於計算新列表的元素
#var:變量,值為后面列表的每個元素值
#list:用於生成新列表的原列表
#condition:條件表達式,用於指定篩選條件
commodity=[6500,3000,5400,5800,4200] print("原商品列表:",commodity) sale=[ i for i in commodity if i>5000] print("價格高於5000的:",sale)
3、二維列表的使用:
二維列表中的信息以行和列的形式表示,第一個下標代表元素所在的行,第二個下標代表元素所在的列。
例如電影院的座位號,每排每列就是一個二維列表。
(1)直接定義二維列表:
在Python中,二位列表是包含列表的列表,即一個列表的每一個元素又都是一個列表。
List=[[10,20,30,40,50], [11,21,31,41,51], [12,22,43,42,52], [13,23,33,43,53]] print(List)
(2)使用嵌套的for循環創建:
創建二位列表,可以使用嵌套的for循環實現。
創建一個包含4行5列的二位列表。 arr = [] #創建一個空列表 for i in range(4): arr.append([]) #在空列表中再添加一個空列表 for j in range(5): arr[i].append(j) #為內層列表構建元素
print(arr) #外層循環控制行,內層循環控制列
(3)使用列表推導式創建:
使用列表推導式也可以創建二維列表,推薦使用這種方法創建二維列表。
使用列表推導式創建一個包含4行5列的二維列表 arr = [[j for j in range(5)] for i in range(4)]
print(arr)
創建二維數組后,可以通過以下語法格式訪問列表中的元素:
listname[下標1][下標2]
#listname:列表名稱
#下標1:表示列表中第幾行,下標值從0開始,即第一行的下標為0.
#下標2:表示列表中第幾行,下標值從0開始,即第一列的下標為0.
以上結果是訪問第一行的第三列。
練習:使用嵌套的for循環將柳宗元的《江雪》分別橫板和豎版輸出
str1="千山鳥飛絕" str2="萬徑人蹤滅" str3="孤舟蓑笠翁" str4="獨釣寒江雪" verse=[list(str1),list(str2),list(str3),list(str4)] #定義一個二維表 print("橫板") for i in range(4): #循環古詩得每一行 for j in range(5): #循環每一行的每列 if j==4: #如果是一行中的最后一個字 print(verse[i][j]) #換行輸出 else: print(verse[i][j],end="") #不換行輸出 verse.reverse() #對列表進行逆序排列 print("\n豎版") for i in range(5): #循環每一行的而每列 for j in range(4): #循環逆序排列后的第一行 if j==3: #如果是最后一行 print(verse[j][i]) #換行輸出 else: print(verse[j][i],end="") #不換行輸出
在上面的代碼中,list()函數用於將字符串轉換為列表;列表對象的reverse()方法用於對列表進行逆序排列,即將列表的最后一個元素移到第一個,倒數第二個元素移到第二個,以此類推。
4、元組:
元組(tuple)是Python中另一個重要的序列結構,與列表類似,也是由一系列按特定順序排列的元素組成,但是它是不可變序列,因此,元組也稱為不可變的列表。
在形式上,元組的所有元素都放在一對括號()中,兩個相鄰元素使用逗號“,”分隔。在內容上,可以將整數、實數、字符串、列表、元組等任何類型的內容放入到元組中,並且在同一個元組中,元素的類型可以不同,因為他們之間沒有任何關系。
通常情況下,元組用於保存程序中不可修改的內容。
從元組和列表的定義上看,這兩種結構比較相似。二者之間的主要區別為:元組是不可變序列,列表是可變序列。即元組中的元素不可以單獨修改,而列表則可以任意修改。
(1)使用賦值運算符直接創建元組:
同其他類型的Python變量一樣,創建元組時,也可以使用賦值運算符“=”直接將一個元組賦值給變量。語法格式如下:
tuplename = (element1,element2,enelent3,...,element)
#tuplename:元組的名稱
#element1,element2,enelent3,...,element 元組中的元素,個數沒有限制
創建元組的語法與創建列表的語法類似,只是創建列表時使用的是“[ ]”,而創建元組時使用的時"( )"。
例如:以下都是合法的元組: num=(4,54,64,23) char=(“科比","喬丹","詹姆斯") untitle=('python',"java",["linux","雲計算'])
在Python中,元組使用一對小括號將所有元素括起來,但是小括號並不是必須的,只要將一組值用逗號分隔開來,Python就可以視其為元組。
如果創建的元組只包括一個元素,則需要在定義元組時,在元素的后面加一個逗號”,“,如果不加逗號,那么就是一個字符串。
verse1=("一片冰心在玉壺",) verse2=("一片冰心在玉壺") print(verse1) print(verse2)
(2)使用type()函數測試變量的類型。
verse1=("一片冰心在玉壺",) verse2=("一片冰心在玉壺") print("verse1的類型是:",type(verse1)) print("verse2的類型是:",type(verse2))