python基礎之列表解析式簡單應用
列表解析 List Comprehensions
表示式:[expression for iter_val in iterable if cond_expr]
[expression]:最後執行的結果
[for iter_val in iterable]:這個可以是一個多層迴圈
[if cond_expr]:兩個for間是不能有判斷語句的,判斷語句只能在最後;順序不定,預設是左到右。
列表解析式是將一個列表(實際上適用於任何可迭代物件(iterable))轉換成另一個列表的方法。在轉換過程中,可以指定元素必須符合一定的條件,才能新增至新的列表中,這樣每個元素都可以按需要進行轉換。
(範例):
生成一個從1~n的平方的列表,如,輸入 5
生成 l=[1,4,9,16,25]
普遍for迴圈做法:
l = []
n = eval(input("請輸入n:"))
for i in range(1,n+1):
l.append(i**2)
print(l)
輸出5,則輸出結果如下
而此時我們參照列表解析式
n = eval(input("請輸入n:"))
l = [i**2 for i in range(1,n+1)]
print(l)
或者我們直接直接合並上述三行程式碼,同樣能生成有序平方列表
print([i**2 for i in range(1,eval(input("請輸入n:"))+1)])
1. 編寫程式,輸入一個字串s,
輸出其每個字元的ASCII碼構成的列表L,
即L中的每個元素是s中每個字元的ASCII碼。
print( [ord(i) for i in input("請輸入一個字串: ")])
2.程式設計計算前n個自然數的立方和,其中n的值由使用者提供
print( sum([i**3 for i in range(1,int( input("請輸入n的值:"))+1)]) )
如果我們學過C語言,就不難發現,python程式碼風格十分簡潔明瞭,正是因為有了大量的庫函數和解釋性的語法,使得程式碼變得簡單易懂。可能同樣的一道程式設計題目,python程式碼量不及c語言的三分之一…由此可見python的魅力之一
同時,我們也能在列表解析式中使用if條件,比如計算前n個能被3整除的自然數
print([i for i in range(1,eval(input("請輸入n:"))+1) if i%3==0])
今天總結的python列表解析表示式就這樣了,可能受限於個人能力及時間,寫的略顯倉促,很多原理上的東西還需要在深入研究,本人也只是應用層面,未曾向許多大牛一樣有原始碼級的理解…
江湖路漫漫,學習程式設計也正是一個不斷積累的過程,此部落格紀念初學python的自己。