แนวคิด
จากลิสต์ที่มี tuples และสตริง ให้คืนเฉพาะสมาชิกที่ "ทุกตัวอักษรเป็นพิมพ์ใหญ่" ใช้ str.isupper()
ตัวอย่างโค้ด
my_list = [("PYTHON", "IS", "Fun"), ("PYTHON", "COOl"), ("PYTHON",), "ORIENTED", "OBJECT"]
print("ลิสต์:", my_list)
result = []
for item in my_list:
# แปลง item ให้เป็น iterable เสมอ (tuple หรือ string)
elements = item if isinstance(item, (tuple, list)) else (item,)
if all(elem.isupper() for elem in elements):
result.append(item)
print("เฉพาะที่ uppercase ทั้งหมด:", result)
ผลลัพธ์
ลิสต์: [('PYTHON', 'IS', 'Fun'), ('PYTHON', 'COOl'), ('PYTHON',), 'ORIENTED', 'OBJECT']
เฉพาะที่ uppercase ทั้งหมด: [('PYTHON',), 'ORIENTED', 'OBJECT']
คำอธิบาย
("PYTHON", "IS", "Fun")-> "Fun" ไม่ใช่ uppercase -> ตัด("PYTHON", "COOl")-> "COOl" มี 'l' เล็ก -> ตัด("PYTHON",)-> tuple เดียว ทุกตัว uppercase -> เก็บ"ORIENTED","OBJECT"-> string ทั้งหมด uppercase -> เก็บ
List Comprehension
result = [
item for item in my_list
if all(e.isupper() for e in (item if isinstance(item, (tuple, list)) else (item,)))
]
หมายเหตุ
isupper() คืน True ก็ต่อเมื่อมีตัวอักษรอย่างน้อย 1 ตัว และทุกตัวเป็นพิมพ์ใหญ่ สตริงที่ไม่มีตัวอักษร (เช่น "123", "!@#") จะคืน False