獠牙運算符(:=)
獠牙運算符是從 Python 3.8 開始引入的一個新運算符,官方名稱為「賦值表達式」、「賦值運算子」。它允許我們在表達式中同時進行賦值操作,將值分配給變數,從而讓程式碼更簡潔並避免重複計算。
舉例來說,在使用 while 迴圈時,我們通常需要先在迴圈外對變數賦值,然後在條件中再次使用該變數。獠牙運算符通常用於縮減程式碼的長度,特別適用於迴圈、條件判斷以及列表推導式等情況。
以下是程式碼範例:
animals = []
while (animal := input("你喜歡什麼動物?")) != "quit":
foods.append(food)
print(foods)
在 Python 中,函式是一組可以重複使用的程式碼片段,用於執行特定的任務或運算,透過定義函式,我們可以將程式邏輯模組化。我們通常使用 def 關鍵字來定義函式,並指定函式名稱、引數以及函式主體。
而在Python中,幾乎所有的東西都被視為物件,其中包括函式,我們可以將函式指派給變數,那麼該如何才能進行指派呢?
我們首先要將變數宣告出來,將函式的名稱(不帶括號)賦予一個值給變數,變數便能呼叫函式,以下是程式碼範例:
say = print
say("hello")
say("hi")
此範例的結果仍然是印出"hello"和"hi"的字串。
接下來,我們將會介紹Python中的常用函式。
1.lambda函式
在 Python 中,lambda 是用於創建匿名函式(沒有名稱)的關鍵字,這類函式通常是「簡單且只有一行的運算」。
lambda 函式的語法為 lambda 參數: 表達式,其中可以有零個或多個參數,並且該表達式會返回運算結果。
lambda 函式的主要用途是用於需要簡單函式的情況,例如作為其他函式的引數,或在排序、過濾、映射等操作中快速定義小型的運算邏輯。由於它的語法簡潔,可以讓程式碼變得更為簡短。但當遇到較複雜的邏輯時,建議還是使用 def 關鍵字定義完整的函式。
接下來,讓我們來看看lambda的實作範例:
double = lambda x: x * 2
print(double(50)) #結果為100
multiply = lambda y, z: y * z
print(multiply(100, 3)) #結果為300
#條件語句
result = lambda a: f"{a}是奇數" if x % 2 != 0 else f"{a}是偶數"
print(result(18))
#字串處理
name = lambda first, last: f"{first}, {last}"
print(name("Lee", "Anna"))
2.map函式
在 Python 中,map是用於對可迭代物件/列表中的每個元素套用指定函式的內建函式,語法為 map(函式, 可迭代物件)。當返回一個 map 物件,需用 list() 或 tuple() 轉換為可視結構。
map() 可以有效地處理大量資料,並能搭配 lambda 表達式一起使用,達到批量處理的效果。
以下是運用map函式的範例:
store = [
("紅花",10) #單位美金
("白花",20)
("黃花",30)
]
change = lambda data: (data[0], round(data[1] * 30)) #轉換成新台幣
result = list(map(change, store))
print(result)
for item in result:
print(item)
3.filter函式
Python 中的 filter() 函式用於根據指定條件過濾序列中的元素或可跌代的資料結構,並返回一個包含符合條件元素或結果。
它的語法為 filter(函式, 序列),其中函式對序列中的每個元素進行判斷,只有返回 True 的元素才會被保留。由於 filter()返回的是迭代器,因此我們可以使用 list() 等將其轉換為列表。
讓我們來看看filter函式的範例程式碼:
fruits = [
("apple", 10),
("banana", 15),
("grape", 30)
]
num_filter = lambda data: data[1] >=12
yes = list(filter(num_filter, fruits))
for fruit in yes:
print(fruit[0])
print(fruit[1])