Python filter()
เมธอดใช้เพื่อกรองรายการ ชุด และทูเพิล filter()
เป็นไปตามเกณฑ์ที่ให้มาเพื่อกรองออบเจ็กต์ที่ทำซ้ำได้ และส่งกลับผลลัพธ์ที่กรองแล้ว
เมื่อคุณกำลังเขียนโปรแกรม คุณอาจมีรายการค่าที่คุณต้องการกรองด้วยวิธีใดวิธีหนึ่ง ตัวอย่างเช่น คุณอาจมีรายการคำสั่งซื้อคุกกี้และต้องการส่งคืนเฉพาะรายการที่เกี่ยวข้องกับช็อกโกแลต ซึ่งจัดการโดยพ่อครัวคนใดคนหนึ่งที่ร้านคุกกี้ของคุณ
นั่นคือที่ที่ Python filter()
เมธอดเข้ามา filter()
สามารถใช้เมธอดเพื่อกรองรายการเฉพาะตามชุดเกณฑ์ที่กำหนดไว้ล่วงหน้าและส่งคืนข้อมูลที่กรองได้แบบ iterable
ในบทช่วยสอนนี้ เราจะพูดถึง filter()
วิธีการและวิธีการใช้ในโค้ดของคุณ เราจะพูดถึงตัวอย่างฟังก์ชันสองสามตัวอย่างในโค้ด Python
ตัวกรองหลาม
รายการเป็นประเภทข้อมูลใน Python ที่สามารถใช้เพื่อเก็บค่าหลายค่าด้วยธีมร่วมกัน ตัวอย่างเช่น คุณสามารถใช้รายการเพื่อจัดเก็บเสื้อผ้าทั้งหมดที่ร้านขายแฟชั่นในพื้นที่มีจำหน่าย หรือเพื่อจัดเก็บรายชื่อภาษาการเขียนโปรแกรม
บ่อยครั้ง เมื่อคุณทำงานกับรายการ คุณจะต้องกรองรายการตามชุดของเกณฑ์ ตัวอย่างเช่น คุณอาจเปิดโรงภาพยนตร์และต้องการทราบว่ามีผู้ที่มีอายุต่ำกว่า 18 ปีเข้าร่วมชมภาพยนตร์ที่โรงภาพยนตร์ของคุณกี่คน
filter()
ซึ่งเป็นฟังก์ชันในตัว สามารถใช้เพื่อกรองรายการและส่งคืนตัววนซ้ำ นี่คือไวยากรณ์สำหรับ filter()
วิธีการ:
filter(function, iterable_object)
filter()
เมธอดรับพารามิเตอร์สองตัว:
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
- ฟังก์ชัน คือรหัสที่จะรันในแต่ละรายการใน iterable ที่คุณระบุ (จำเป็น) ฟังก์ชันจะตรวจสอบว่า iterable คืนค่า True หรือ False
- iterable_object เป็นวัตถุที่คุณต้องการกรอง (จำเป็น)
วัตถุ iterable ที่คุณระบุสามารถ iterable ใดๆ เช่น Python lists
, sets
และ tuples
.
ตัวอย่างตัวกรอง Python
มาดูตัวอย่างเพื่อสาธิตวิธีการใช้วิธีนี้กัน
สมมติว่าคุณกำลังเปิดชั้นวางนิตยสารและต้องการตรวจสอบว่าคุณจำเป็นต้องสั่งซื้อสินค้าคงคลังใหม่หรือไม่ หากคุณมีนิตยสารน้อยกว่า 20 ฉบับ คุณต้องสั่งซื้อใหม่ หากคุณมีนิตยสารมากกว่า 20 ฉบับ คุณไม่จำเป็นต้องทำการสั่งซื้อใหม่ คุณมีรายการหมายเลขที่เก็บนิตยสารตามจำนวนที่คุณมี
หากต้องการตรวจสอบว่าคุณจำเป็นต้องสั่งซื้อนิตยสารใดๆ หรือไม่ คุณสามารถใช้รหัสต่อไปนี้:
quantities = [25, 49, 21, 17, 14, 28] def checkQuantities(mags): if mags < 20: return True else: return False filtered_mags = filter(checkQuantities, quantities) print(list(filtered_mags))
รหัสของเราส่งคืน:[17, 14]
มาทำลายรหัสของเรากัน ในบรรทัดแรก เรากำหนดตัวแปรที่เรียกว่า quantities
ซึ่งจัดเก็บนิตยสารแต่ละฉบับที่เรามีอยู่ในคลังของเรา
จากนั้น เรากำหนดฟังก์ชันที่เรียกว่า checkQuantities
ซึ่งจะตรวจสอบว่าเรามีนิตยสารเฉพาะในสต็อกน้อยกว่า 20 ฉบับหรือไม่ หากเรามีน้อยกว่า 20 รุ่น checkQuantities
ฟังก์ชั่นคืนค่า True; ไม่เช่นนั้นจะคืนค่าเป็นเท็จ
ต่อไปเราจะใช้ filter()
เมธอดและระบุ checkQuantities
เป็นฟังก์ชันและ quantities
. ของเรา เป็นวัตถุ iterable ของเรา สิ่งนี้บอก filter()
. ของเรา วิธีการดำเนินการ checkQuantities
ในทุกรายการในอาร์เรย์ปริมาณ
จากนั้น เราก็พิมพ์ผลลัพธ์ของ filter()
และใช้ list()
เพื่อแปลงเป็นรายการ นี่เป็นสิ่งสำคัญเพราะ filter()
ส่งคืนวัตถุที่ถูกกรอง ไม่ใช่รายการ ดังนั้น หากเราต้องการดูข้อมูลของเรา เราต้องแปลงเป็นรายการ
อย่างที่คุณเห็น โค้ดของเราส่งคืนค่าสองค่า:17 และ 14 ค่าแต่ละรายการมีค่าต่ำกว่า 20 ซึ่งหมายความว่าโปรแกรมของเราทำงานตามที่ตั้งใจไว้
มาดูอีกตัวอย่างหนึ่งเพื่อแสดงให้เห็นว่าวิธีนี้ทำงานอย่างไร สมมติว่าเราเป็นครูสอนเต้นและเราต้องการทราบอายุของทุกคนในชั้นเรียนที่มีอายุระหว่างเจ็ดถึงสิบขวบ โดยรวมทั้งอายุเจ็ดถึงสิบขวบ เราสามารถใช้รหัสต่อไปนี้เพื่อรับข้อมูลนี้:
student_ages = [7, 9, 8, 10, 11, 11, 8, 9, 12] def checkAges(ages): if ages >= 7 and ages <= 10: return True else: return False filtered_ages = filter(checkAges, student_ages) print(list(filtered_ages))
รหัสของเราส่งคืน:[7, 9, 8, 10, 8, 9]
. ดังที่คุณเห็น โปรแกรมของเราได้กรองนักเรียนที่มีอายุระหว่าง 7 ถึง 10 ปีออกจากองค์ประกอบรายการของเรา ซึ่งรวมถึงนักเรียนอายุ 7 ถึง 10 ปี รายการผลลัพธ์ประกอบด้วยข้อมูลที่กรองแล้วของเรา
ตัวกรอง Python พร้อมแลมบ์ดา
เพื่อให้การทำงานของตัวกรองมีประสิทธิภาพมากขึ้น เราสามารถใช้ฟังก์ชัน list map Lambda แลมบ์ดาเป็นฟังก์ชันพิเศษที่กำหนดโดยไม่มีชื่อ และสามารถใช้เพื่อเขียนฟังก์ชันที่ไม่ระบุตัวตนแบบบรรทัดเดียวแบบสั้นใน Python
ลองมาดูตัวอย่างปริมาณนิตยสารของเราจากด้านบนกัน ในตัวอย่างนี้ เราได้สร้างฟังก์ชันที่ตรวจสอบว่าเรามีนิตยสารในสต็อกน้อยกว่า 20 ฉบับหรือไม่ และใช้ filter()
เพื่อใช้งานฟังก์ชั่นนั้นในรายการนิตยสารของเรา จากนั้น โปรแกรมของเราก็แสดงรายการนิตยสารทุกฉบับที่เรามีน้อยกว่า 20 ฉบับ
เราสามารถใช้ฟังก์ชัน Lambda เพื่อดำเนินการแบบเดียวกันนี้ได้ แต่มีประสิทธิภาพมากกว่า นี่คือรหัสที่เราสามารถใช้ได้:
quantities = [25, 49, 21, 17, 14, 28] filtered_mags = filter(lambda mag: mag < 20, quantities) print(list(filtered_mags))
รหัสของเราส่งคืน:[17, 14]
.
อย่างที่คุณเห็น ผลลัพธ์ของเราเหมือนกัน แต่โค้ดของเราสั้นกว่าอย่างเห็นได้ชัด แทนที่จะกำหนดฟังก์ชันทั้งหมด เราใช้ Lambda เพื่อกำหนดฟังก์ชันบรรทัดเดียว
ฟังก์ชันบรรทัดเดียวนี้จะตรวจสอบว่าเรามีนิตยสารในสต็อกน้อยกว่า 20 ฉบับหรือไม่ และคืนค่า True ไปยัง filter()
ตัววนซ้ำหากเป็นกรณีนี้ หลังจากดำเนินการ โปรแกรมของเราส่งคืนรายการที่มีค่าสองค่า:17 และ 14
บทสรุป
Python filter()
สามารถใช้ฟังก์ชันเพื่อกรองออบเจ็กต์ที่ทำซ้ำได้ โดยอิงตามชุดของเกณฑ์ที่กำหนดไว้ล่วงหน้าและส่งคืนตัวกรอง iterable ที่กรองแล้ว วิธีนี้มีประโยชน์หากคุณมีรายการข้อมูลที่คุณต้องการดึงเฉพาะค่าที่ตรงตามเกณฑ์ที่กำหนดเท่านั้น
ในคู่มือนี้ เราได้พูดถึงไวยากรณ์สำหรับ filter()
วิธีการและวิธีการใช้ใน Python เราได้ดูตัวอย่างบางส่วนของ filter()
ในการใช้งานจริงแล้วเรามาดูกันว่า filter()
สามารถใช้กับฟังก์ชัน Python Lambda เพื่อทำให้โค้ดของเรามีประสิทธิภาพมากขึ้น
ตอนนี้คุณมีข้อมูลที่จำเป็นในการใช้ filter()
. แล้ว เหมือนผู้เชี่ยวชาญ Python!