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

การตรวจสอบว่า Tuple มีค่า None หรือไม่ใน Python

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 สร้างฟังก์ชันเช็ค None
  • map(...) ใช้ฟังก์ชันนี้กับทุก Element ได้ Iterator ของ Boolean
  • any(...) เช็คว่ามี 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 - เร็วที่สุด