บทความนี้จะแสดงวิธีหาความต่างระหว่างคู่สมาชิกที่ติดกัน (Successive pairs) ในลิสต์ที่มีเฉพาะตัวเลข
วิธีที่ 1: ใช้ Index และ List Comprehension
ใช้ดัชนี (index) ร่วมกับ range(len(listA) - 1) เพื่อเข้าถึงคู่สมาชิก listA[i] และ listA[i+1]
ตัวอย่าง
listA = [12, 14, 78, 24, 24]
print("Given list:\n", listA)
res = [listA[i + 1] - listA[i] for i in range(len(listA) - 1)]
print("List with successive difference in elements:\n", res)
ผลลัพธ์
Given list: [12, 14, 78, 24, 24] List with successive difference in elements: [2, 64, -54, 0]
วิธีที่ 2: ใช้ List Slicing และ zip
Slice ลิสต์เป็น 2 ชุด: listA[:-1] (ทุกตัวยกเว้นตัวสุดท้าย) และ listA[1:] (ทุกตัวยกเว้นตัวแรก) แล้ว zip เข้าด้วยกัน
ตัวอย่าง
listA = [12, 14, 78, 24, 24]
print("Given list:\n", listA)
res = [x - y for y, x in zip(listA[:-1], listA[1:])]
print("List with successive difference in elements:\n", res)
ผลลัพธ์
Given list: [12, 14, 78, 24, 24] List with successive difference in elements: [2, 64, -54, 0]
วิธีที่ 3: ใช้ operator.sub และ map
โมดูล operator มีฟังก์ชัน sub สำหรับการลบ ใช้ร่วมกับ map และ slicing เหมือนวิธีที่ 2
ตัวอย่าง
import operator
listA = [12, 14, 78, 24, 24]
print("Given list:\n", listA)
res = list(map(operator.sub, listA[1:], listA[:-1]))
print("List with successive difference in elements:\n", res)
ผลลัพธ์
Given list: [12, 14, 78, 24, 24] List with successive difference in elements: [2, 64, -54, 0]
วิธีที่ 2 (zip + slicing) เป็นที่นิยมมากที่สุดเพราะอ่านง่ายและเป็น Pythonic วิธีที่ 3 เหมาะสำหรับผู้ที่ชอบ functional programming