六. 語句與語法:函數 + 列表生成式

函數

在Python中,定義一個函數要使用 def 語句,依次寫出函數名、括號、括號中的參數和冒號:,然後,在縮進塊中編寫函數體,函數的返回值用 return 語句返回。

如果沒有return語句,函數執行完畢後也會返回結果,只是結果爲 None。
return None可以簡寫爲return。

def square_of_sum(L):
    sum = 0
    for item in L:
        sum += item ** 2
return sum

多返回值函數

在語法上,返回一個tuple可以省略括號,而多個變量可以同時接收一個tuple,按位置賦給對應的值,所以,Python的函數返回多值其實就是返回一個tuple,但寫起來更方便。

import math
def quadratic_equation(a, b, c):
    ra = (-b + math.sqrt(b ** 2 - 4 * a * c)) / (2 * a)
    rb = (-b - math.sqrt(b ** 2 - 4 * a * c)) / (2 * a)
return ra,rb

默認參數

函數的默認參數的作用是簡化調用,你只需要把必須的參數傳進去。但是在需要的時候,又可以傳入額外的參數來覆蓋默認參數值。
由於函數的參數按從左到右的順序匹配,所以默認參數只能定義在必需參數的後面

def greet(str="world"):
print('Hello,'+str+'.')

可變參數

可變參數的名字前面有個 * 號,我們可以傳入0個、1個或多個參數給可變參數
Python解釋器會把傳入的一組參數組裝成一個tuple傳遞給可變參數,因此,在函數內部,直接把變量 args 看成一個 tuple 就好了。

def average(*args):
    if len(args) == 0:
        return 0.0
    sum = 0.0
    for item in args:
        sum += item
return sum / len(args)

列表生成式

把要生成的元素 x * x 放到前面,後面跟 for 循環,就可以把list創建出來

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

print([x * (x+1) for x in range(1,100,2)])

條件過濾

只有 if 判斷爲 True 的時候,才把循環的當前元素添加到列表中。

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

def toUppers(L):
return [s.upper() for s in L if isinstance(s,str)]

多層表達式

for循環可以嵌套,因此,在列表生成式中,也可以用多層 for 循環來生成列表。

>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

翻譯爲循環

L = []
for m in 'ABC':
    for n in '123':
        L.append(m + n)

print [a * 100 + b * 10 + c for a in range(1,10) for b in range(10) for c in range(10) if a == c]
輸出:[101, 111, 121, 131, 141, 151, 161, 171, 181,….

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章