Page 107 - python
P. 107
81
ตัวอยางที่ 7.9 การใช filter และ lambda กรองขอมูล
x = [0, 1, 2, 0, 3, 5]
z = list(filter(lambda a:a != 0, x))
print(z)
ผลลัพธ :
[1, 2, 3, 5]
ตัวอยางที่ 7.9 ตัวแปร x มีคา [0, 1, 2, 0, 3, 5] คําสั่ง filter() เปนการกรองใหเหลือคาที่ตรง
ึ
ํ
ตามเงื่อนไขที่กาหนด ในตัวอยางนี้ฟงกชั่นกรองคือ lambda a:a != 0 หมายถง คาที่สงเขามาแตละรอบ
จะเก็บไวในตัวแปร a จากนั้นตรวจสอบวาถา a != 0 ใหคืนคาออกมาจากฟงกชั่น ถาคา a ที่สงเขาไป
่
เทากับ 0 ใหตัดทงไป คาสัง filter(function,x) เมื่อ x เปนอารกิวเมนตที่สงใหฟงกชั่นโดยจะเก็บในตัวแปร
ํ
้
ิ
a ผลลัพธหลังจากการกรองแลวมีคา [1, 2, 3, 5]
7.9 คําสั่ง reduce
คําสั่ง reduce() ทําหนาที่ดําเนินการผลลัพธใหเหลือเพียงคาเดียวตามฟงกชั่นที่กําหนดขึ้น
ตัวอยางที่ 7.10 คาสัง reduce
่
ํ
from functools import reduce
x = [ 2, 4, 6, 7]
m = reduce(lambda a,b:a+b, x)
n = reduce(lambda a,b:a-b, x)
o = reduce(lambda a,b:a*b, x)
print(m, n, o)
ผลลัพธ :
19 -15 336
ตัวอยางที่ 7.10 ตัวแปร x ประกอบดวยตัวเลข [2, 4, 6, 7] เมื่อผานฟงกชั่น reduct() จะทําการ
สงตัวแปร x ใหกับฟงกชั่นที่สรางขึ้นดวยคําสั่ง lambda โดยมีฟงกชั่นเทากับ a+b, a-b และ a*b ผลลัพธ
จะเปนการนําตัวเลขแตละตัวมาทําการบวก ลบ และคูณ มีคาเทากับ 19 , -15 และ 336 ตามลําดับ
ภาพประกอบที่ 7.1 แสดงการ reduce ดวยฟงกชั่นการบวก ลบ และคูณ