Python入門100個實例(34)——列表推導式的應用

從本例學到什麼

  1. 列表推導式用於輸入整數列表。
  2. 列表推導式用於轉換列表中各個元素的數據類型。

實例程序

題目描述

將數組中的數逆序存放
本題要求編寫程序,將給定的n個整數存入數組中,將數組中的這n個數逆序存放,再按順序輸出數組中的元素。

輸入格式:
輸入在第一行中給出一個正整數n(1≤n≤10)。第二行輸入n個整數,用空格分開。

輸出格式:
在一行中輸出這n個整數的處理結果,相鄰數字中間用一個空格分開,行末不得有多餘空格。

輸入樣例:
4
10 8 1 2

輸出樣例:
2 1 8 10

上述題目的參考答案

n = int(input())
ns = [int(s) for s in input().split()]  #用列表推導式讀入整數列表
ns_str = [str(ri) for ri in ns[::-1]]  #用列表推導式把整數列表轉換爲字符串列表
print(' '.join(ns_str))  #調用字符串對象的join方法,合併字符串列表,列表元素之間用空格間隔

知識點講解

  1. 列表推導式的寫法: [表達式 for 變量 in 列表] 。這裏,for和in是固定不變的。

  2. 上一節給出的代碼中的第2行的執行過程是:
    (1)執行input()讀入一行內容。
    (2)執行split()方法,作用是以空格作爲分割符,把讀入的一行內容切分成多個數字串,生成數字串列表。把數字串列表記作n_strs。至此,第2行代碼等同於: ns = [int(s) for s in n_strs] 。
    (3)執行列表推導式[int(s) for s in n_strs],生成結果列表。以上一節給出的輸入樣例爲例,具體的步驟是:
    (3-1) 變量s賦值爲n_strs的第1個元素,即’10’,接着執行int(‘10’),得到整數10,加入結果列表。一開始,結果列表爲空列表。"(3-1)"這一步執行後,結果列表爲[10]。
    (3-2)變量s賦值爲n_strs的第2個元素,即’8’,接着執行int(‘8’),得到整數8,加入結果列表。這一步執行後,結果列表爲[10, 8]。
    (3-3)變量s賦值爲n_strs的第3個元素,即’1’,接着執行int(‘1’),得到整數1,加入結果列表。這一步執行後,結果列表爲[10, 8, 1]。
    (3-4)變量s賦值爲n_strs的第4個元素,即’2’,接着執行int(‘2’),得到整數2,加入結果列表。這一步執行後,結果列表爲[10, 8, 1, 2]。
    (4)結果列表賦值給ns。

  3. 上一節給出的代碼中的第3行的執行過程是:
    (1)執行ns[::-1],得到列表ns的逆序列表r_ns。於是,第3行代碼等同於:ns_str=[str(ri) for ri in r_ns] 。
    (2)執行列表推導式[str(ri) for ri in r_ns],生成結果列表。以r_ns爲[2, 1, 8, 10]爲例,具體步驟是:
    (2-1)變量ri賦值爲r_ns的第1個元素,即2,接着執行str(2),得到字符串’2’,加入結果列表。一開始,結果列表爲空列表。這一步執行後,結果列表爲[‘2’]。
    (2-2)變量ri賦值爲r_ns的第2個元素,即1,接着執行str(1),得到字符串’1’,加入結果列表。這一步執行後,結果列表爲[‘2’, ‘1’]。
    (2-3)變量ri賦值爲r_ns的第3個元素,即8,接着執行str(8),得到字符串’8’,加入結果列表。這一步執行後,結果列表爲[‘2’, ‘1’, ‘8’]。
    (2-4)變量ri賦值爲r_ns的第4個元素,即10,接着執行str(10),得到字符串’10’,加入結果列表。這一步執行後,結果列表爲[‘2’, ‘1’, ‘8’, ‘10’]。
    (3)結果列表賦值給ns_str。

  4. 把整數列表轉換爲字符串列表的原由是,字符串的join方法要求參數是字符串列表。’ ‘.join(字符串列表) 的作用是把字符串列表內的元素合併成一個字符串,元素之間用空格間隔。如果是’#’.join(字符串列表),那麼元素之間用#號間隔。

小結

  1. 從一個列表導出另一個列表,通常可以運用列表推導式。
  2. 從寫法和執行過程兩方面來理解列表推導式。平時多運用,就會徹底掌握了。
  3. 列表推導式縮短代碼的利器。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章