1. 程式人生 > >人生苦短,我用Python(3)

人生苦短,我用Python(3)

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.

 

  以上結果是訪問第一行的第三列