บทนำ
การนับจำนวน element ใน tuple ก่อนเจอ tuple แรก (nested tuple) สามารถทำได้ด้วย enumerate() และ isinstance() ตรวจสอบชนิดข้อมูล
ตัวอย่างโค้ด
my_tuple = (7, 8, 11, 0, (3, 4, 3), (2, 22))
print("Tuple:", my_tuple)
count = 0
for idx, elem in enumerate(my_tuple):
if isinstance(elem, tuple):
break
count += 1
print("จำนวน elements ก่อน tuple แรก:", count)
ผลลัพธ์
Tuple: (7, 8, 11, 0, (3, 4, 3), (2, 22)) จำนวน elements ก่อน tuple แรก: 4
คำอธิบาย
enumerate(my_tuple)ให้ (index, value) ทีละคู่isinstance(elem, tuple)ตรวจสอบว่า element เป็น tuple หรือไม่- เจอ tuple แรก → break ออกจากลูป
- นับจำนวนรอบที่ยังไม่เจอ tuple
รูปแบบสั้น (One-liner)
# ใช้ next() หา index แรกที่เป็น tuple
try:
first_tuple_idx = next(i for i, x in enumerate(my_tuple) if isinstance(x, tuple))
except StopIteration:
first_tuple_idx = len(my_tuple) # ไม่มี tuple เลย
print("Index ของ tuple แรก:", first_tuple_idx)
print("จำนวน elements ก่อนหน้า:", first_tuple_idx)
การประยุกต์: หาตำแหน่ง list แรก แทน tuple
first_list_idx = next((i for i, x in enumerate(my_tuple) if isinstance(x, list)), -1)