iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
Python

python零之旅系列 第 13

DAY13. Python中的運算符與函式

  • 分享至 

  • xImage
  •  

獠牙運算符

獠牙運算符(:=)

獠牙運算符是從 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])

上一篇
DAY12. Python中的方法
下一篇
DAY14. Python中的函式與模組
系列文
python零之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言