Python學習筆記3---PYTHON函式與高階特性
第三天---PYTHON函式與高階特性
在python中,定義一個函式使用def語句在縮排塊裡編寫函式語句。返回值則使用return語句。感覺縮排塊是個神奇的東西,既把程式碼的格式規範看起來更容易,比起其他語言還少了花括號的困擾,每個迴圈、分支、函式的作用域就是他們的縮排塊。
接下來就用PYTHON的函式來寫一個經典的求1到n之和
def sum(n):
s=0
i=1
while i<=n:
s=s+i
i=i+1
return s
相比於其他語言確實簡單了許多,而py中函式的返回值可以有多個,實際上它是把所有的返回值綜合成一個turple返回,例如return 1,2接收到的值實際上是(1,2)
其他的關於遞迴函式和複雜的多形參引數與C語言和其他程式語言都比較類似。
高階特性:
切片特性就類似於java中的split函式,將一個數組或字串分割為指定索引範圍的陣列或字串
例如我定義一個數組 l=[‘1’,‘2’,‘3’,‘4’]
l(0:3) 1,2,3 輸出了前三個元素,切片的範圍是[a:b]= [a,b)
第一個元素的位置為0,倒數第一個元素的位置為-1
這節的作業是一個使用切片來實現trim()函式,trim函式就是將一個字串的首尾空格都去掉後返回。自己寫了一個不太成熟的僅供參考
def trim(s):
flen=0
elen=len(s)-1;
while 1:
if(s[flen]==' '):
flen=flen+1
else:
break
while 1:
if(s[elen]==' '):
elen=elen-1
else:
break
return s[flen:elen+1]
思路就是先找到首尾中第一個非空元素的位置再用切片把這一位置切下來返回。
高階特性:2.列表生成式
列表生成式的意思就是我想一次通過定義生成一個有規律的陣列,類似於range(5)生成的就是1-5的數值,但如果我想生成1 4 9 16 或者 1 3 5 7 9這樣有規律的數列就需要藉助列表生成式。
例如生成一個長度為10的數字平方的數列
[x*x for x in range(1,11)] 相當於在1-11的range陣列中的每個數的平方放到新的數組裡,相當於把裡面的內容當作一個語句去寫,變數個數也沒有限制,for x,y in 也可以
生成器與列表生成式相類似,把方括號改為圓括號就可以表示為生成器的演算法,它不像列表生成式一次把整個列表都計算出來,節省了記憶體空間。生成器是通過儲存演算法,隨用隨呼叫
例如 a=(x*x for x in range(1,11))中for i in a :print(i) 同樣是對這個列表進行遍歷。