Check if Tuple Contains None Value
เมื่อต้องการตรวจสอบว่า Tuple มีค่า None อยู่หรือไม่ สามารถใช้ any(), map() และ Lambda Function ร่วมกันได้
ฟังก์ชันที่ใช้
- map(): ใช้ฟังก์ชันกับทุก Item ใน Iterable
- Lambda: Anonymous Function กำหนดด้วยคำสำคัญ
lambdaรับ Argument ได้หลายตัว แต่มี Expression เดียว - any(): คืน
Trueถ้ามี Element ใด Element หนึ่งเป็น True มิฉะนั้นFalse
ตัวอย่างโค้ด
my_tuple = (31, 45, 12, 56, 78, None, None)
print("The tuple is : ")
print(my_tuple)
# Lambda เช็คว่า elem is None, map ใช้กับทุกตัว, any เช็คว่ามี True ไหม
my_result = any(map(lambda elem: elem is None, my_tuple))
print("Does the tuple contain any None value ? ")
print(my_result)
ผลลัพธ์
The tuple is : (31, 45, 12, 56, 78, None, None) Does the tuple contain any None value ? True
คำอธิบาย
- กำหนด Tuple ที่มี None 2 ตัว และแสดงผล
lambda elem: elem is Noneสร้างฟังก์ชันเช็ค Nonemap(...)ใช้ฟังก์ชันนี้กับทุก Element ได้ Iterator ของ Booleanany(...)เช็คว่ามี True อย่างน้อย 1 ตัว- เก็บผลลัพธ์และแสดง
วิธีอื่นที่อ่านง่ายกว่า
# Generator Expression (แนะนำ)
my_result = any(elem is None for elem in my_tuple)
print(my_result) # True
# หรือใช้ in โดยตรง (Pythonic)
print(None in my_tuple) # True - เร็วที่สุดและอ่านง่ายที่สุด
กรณีไม่มี None
my_tuple = (1, 2, 3, 4, 5)
print(any(elem is None for elem in my_tuple)) # False
print(None in my_tuple) # False
นับจำนวน None
my_tuple = (31, 45, 12, 56, 78, None, None)
count = sum(1 for elem in my_tuple if elem is None)
print(count) # 2
# หรือ
print(my_tuple.count(None)) # 2 - เร็วที่สุด