ในบทความนี้เราจะเรียนรู้วิธีสร้างลิสต์ใหม่จากลิสต์เดิม โดยการคำนวณความต่างระหว่างสมาชิกที่อยู่ติดกัน (Adjacent elements) มีหลายวิธีการทำ เราจะมาดูแต่ละวิธีกัน
วิธีที่ 1: ใช้ append และ range
วิธีนี้ใช้ลูป for วนลูปผ่านดัชนี (index) ของลิสต์ คำนวณความต่างระหว่างสมาชิกปัจจุบันกับสมาชิกก่อนหน้า แล้วนำผลลัพธ์ไป append เข้าลิสต์ใหม่ ใช้ range และ len เพื่อควบคุมจำนวนรอบการวนลูป
ตัวอย่าง
listA = [25, 97, 13, 62, 14, 102]
print("Given list:\n", listA)
list_with_diff = []
for n in range(1, len(listA)):
list_with_diff.append(listA[n] - listA[n-1])
print("Difference between adjacent elements in the list: \n", list_with_diff)
ผลลัพธ์
Given list: [25, 97, 13, 62, 14, 102] Difference between adjacent elements in the list: [72, -84, 49, -48, 88]
วิธีที่ 2: ใช้ zip และ list slicing
วิธีนี้ใช้ zip รวมกับการ slicing ลิสต์ เพื่อจับคู่สมาชิกติดกันเข้าด้วยกัน (สมาชิกตัวที่ n กับตัวที่ n+1) แล้วคำนวณความต่าง
ตัวอย่าง
listA = [25, 97, 13, 62, 14, 102]
print("Given list:\n", listA)
list_with_diff = []
for i, j in zip(listA[0::], listA[1::]):
list_with_diff.append(j - i)
print("Difference between adjacent elements in the list: \n", list_with_diff)
ผลลัพธ์
Given list: [25, 97, 13, 62, 14, 102] Difference between adjacent elements in the list: [72, -84, 49, -48, 88]
ทั้งสองวิธีให้ผลลัพธ์เท่ากัน วิธีที่ 2 เขียนสั้นกว่าและเป็น Pythonic มากกว่า