人生苦短,我用Python(3)

一、對列表進行排序:java

  (1)使用列表對象的sort()方法:python

  列表對象提供了sort()方法用於對原列表中的元素進行排序。排序後原列表中的元素順序將發生改變。改變對象的sort()方法的語法格式以下:linux

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()方法。app

  (2)使用內置的sorted()函數實現:dom

  再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()函數時,會創建一個原列表的副本,該副本爲排序後的列表。測試

 二、列表推導式:雲計算

  使用列表推導式能夠快速生成一個列表,或者根據某個列表生成知足指定需求的列表。列表推導式一般有如下幾種經常使用的語法格式。spa

  (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)

 三、二維列表的使用:

  二維列表中的信息以行和列的形式表示,第一個下標表明元素所在的行,第二個下標表明元素所在的列。

  例如電影院的座位號,每排每列就是一個二維列表。

  (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()方法用於對列表進行逆序排列,即將列表的最後一個元素移到第一個,倒數第二個元素移到第二個,以此類推。

四、元組:

  元組(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))

相關文章
相關標籤/搜索