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

การใช้ filter() ใน Python

ฟังก์ชัน filter() ใช้สำหรับกรอง (Filter) สมาชิกจาก iterable ตามเงื่อนไขที่กำหนด คืนค่าเป็น iterator ที่มีเฉพาะสมาชิกที่ผ่านเงื่อนไข

ไวยากรณ์

filter(function, iterable)
# function: ฟังก์ชันที่รับค่า 1 ค่า คืนค่า True/False
# iterable: ข้อมูลที่ต้องการกรอง (list, tuple, etc.)

ตัวอย่าง: กรองเฉพาะเลขคู่

สร้างฟังก์ชัน findeven ตรวจสอบว่าเลขคู่หรือไม่ แล้วนำไปใช้กับ filter()

ตัวอย่าง

listA = [15, 8, 21, 13, 32]

def findeven(x):
    if x % 2 != 0:
        return False
    else:
        return True

evenum = filter(findeven, listA)
for x in evenum:
    print(x)

ผลลัพธ์

8
32

การเขียนแบบสั้นกว่าด้วย Lambda

listA = [15, 8, 21, 13, 32]
evenum = filter(lambda x: x % 2 == 0, listA)
print(list(evenum))  # [8, 32]

การแปลงเป็นลิสต์

filter() คืนค่าเป็น iterator ต้องใช้ list() หากต้องการเป็นลิสต์จริง

# กรองสตริงที่ยาวกว่า 3 ตัวอักษร
words = ['cat', 'elephant', 'dog', 'hippopotamus']
long_words = list(filter(lambda w: len(w) > 3, words))
print(long_words)  # ['elephant', 'hippopotamus']

หมายเหตุ: ใน Python 3 filter() คืนค่า iterator (Lazy) ไม่ใช่ลิสต์เหมือน Python 2