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

การคำนวณความต่างระหว่างสมาชิกติดกันในลิสต์ Python

ในบทความนี้เราจะเรียนรู้วิธีสร้างลิสต์ใหม่จากลิสต์เดิม โดยการคำนวณความต่างระหว่างสมาชิกที่อยู่ติดกัน (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 มากกว่า