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

การบวกเฉพาะค่าตัวเลขในลิสต์ที่ผสมสตริง Python

มีลิสต์ที่ประกอบด้วยทั้งสตริงและตัวเลข ต้องการบวกเฉพาะตัวเลข โดยข้ามสตริง

วิธีที่ 1: ใช้ filter และ isinstance

isinstance(x, int) ตรวจสอบว่า x เป็น int หรือไม่ ใช้ filter กรอง แล้ว sum

ตัวอย่าง

listA = [1, 14, 'Mon', 'Tue', 23, 'Wed', 14, -4]
print("Given list:", listA)

res = sum(filter(lambda i: isinstance(i, int), listA))
print("Sum of numbers in listA:", res)

ผลลัพธ์

Given list: [1, 14, 'Mon', 'Tue', 23, 'Wed', 14, -4]
Sum of numbers in listA: 48

วิธีที่ 2: ใช้ List Comprehension

เขียนในรูป list comprehension แทน filter คล้ายกันแต่อ่านง่ายกว่าบางคน

ตัวอย่าง

listA = [1, 14, 'Mon', 'Tue', 23, 'Wed', 14, -4]
print("Given list:", listA)

res = sum([x for x in listA if isinstance(x, int)])
print("Sum of numbers in listA:", res)

ผลลัพธ์

Given list: [1, 14, 'Mon', 'Tue', 23, 'Wed', 14, -4]
Sum of numbers in listA: 48

ขยายความเป็น float: ใช้ isinstance(x, (int, float)) เพื่อรองรับทศนิยมด้วย

res = sum([x for x in listA if isinstance(x, (int, float))])