Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตัวกรอง Python:บทช่วยสอนทีละขั้นตอน

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!