iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
Python

自主學習Python網路爬蟲-PTT爬蟲、Hahow爬蟲、Yahoo電影爬蟲實作系列 第 16

Day16 藉由影片教學學習Python基礎語法

  • 分享至 

  • xImage
  •  

今天要分享的是Python基礎語法中的將函式指派給變數Lambda(λ)方法map()方法以及filter 過濾函式
首先是將函式指派給變數
(1)自定義函式的指派方式

def hello():
    print("hello")
#hello()
hi = hello #宣告變數(hi),後把函式(hello)指派給它
hi() #執行出的結果為hello,現在hi就等於hello
hi() #可呼叫多次
hi()

輸出結果為:
hello
hello
hello

(2)函式位置

def hello():
    print("hello")
hi = hello
print(hello) #兩個函式(hello&hi)的記憶體位置相同
print(hi)

輸出結果為:
<function hello at 0x0000015B76188AE0>
<function hello at 0x0000015B76188AE0>

(3)內建函式的指派方式

say = print
say("Hello")
say("Hi")

輸出結果為:
Hello
Hi

接下來要分享的是Lambda(λ)方法
#Lambda有函式的功能(只要一個表達式即可寫完),可傳遞多個參數
(1)範例一:double

#def double(x):
#    return x * 2 #回傳x的兩倍
#print(double(10)) #輸出20
double2 = lambda x : x * 2
print(double2(50))

輸出結果為:100

(2)範例二:乘法(multiply)

multiply = lambda x,y : x * y
print(multiply(2,5))

輸出結果為:10

(3)範例三:if else 條件語句

result = lambda x: f"{x}是偶數" if x % 2 == 0 else f"{x}是奇數"
#if要直接寫在字串後面,如果x除以2的餘數為0時,x就是偶數
print(result(10))
print(result(21))

輸出結果為:
10是偶數
21是奇數

(4)範例四:處理字串

full_name = lambda first_name,last_name:f"{first_name} {last_name}"
#回傳first_name和last_name(f"{first_name} {last_name}")
print(full_name("林","Amy"))

輸出結果為:林 Amy

再來要分享的是map()方法
#map(函式,可迭代[列表])
(1)範例一(將美金轉為台幣)

store = [ #宣告一個列表
    ("襯衫",20), #列表中放入元組
    ("褲子",30),
    ("夾克",50),
    ("襪子",10) #美金
]
#定一個函式,可用Lambda撰寫
to_twd = lambda data: (data[0],data[1] * 30) #美金轉台幣是乘以30
#data[0]是指襯衫,data[1]是指襯衫的價格 #加括號的原因是要回傳的是元組
store_twd = list(map(to_twd,store)) #用list()方法做展開
print(store_twd)

輸出結果為:[('襯衫', 600), ('褲子', 900), ('夾克', 1500), ('襪子', 300)]

(2)範例二(將台幣轉為美金)

store = [
    ("襯衫",300), #台幣
    ("褲子",600),
    ("夾克",1600),
    ("襪子",200)
]
#將台幣轉換成美金
to_usd = lambda  data:(data[0],round(data[1]/30))
store_usd = list(map(to_usd,store))
for item in store_usd: #把列表中的東西迭代出來
    print(item)

輸出結果為:
('襯衫', 10)
('褲子', 20)
('夾克', 53)
('襪子', 7)

最後要分享的是filter 過濾函式
#filter可用來過濾可迭代的資料結構(List,...)

friends = [
    ("Bob",18), #()為Tuple方法,"Bob"為index[0],18為index[1]
    ("Cindy",15),
    ("Steve",12),
    ("John",21),
    ("Sarah",19)
]

age_filter = lambda data: data[1] >= 18 #index[1]要大於等於18歲
can_drink_friends = list(filter(age_filter,friends)) #轉換為列表(list)
for friends in can_drink_friends: #用for迴圈迭代
    print(friends[0],friends[1])

輸出結果為:
Bob 18
John 21
Sarah 19


以上是我第16天的分享,謝謝大家的觀看!
參考網址:https://www.youtube.com/watch?v=lvH4-4iYjgs&list=LL&index=4


上一篇
Day15 藉由影片教學學習Python基礎語法與心得
下一篇
Day17 藉由影片教學學習Python基礎語法
系列文
自主學習Python網路爬蟲-PTT爬蟲、Hahow爬蟲、Yahoo電影爬蟲實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言