เมื่อต้องการรวมทัพเพิลที่อยู่ติดกันและมีองค์ประกอบแรก (index 0) เหมือนกัน สามารถใช้ลูป for ตรวจสอบและใช้ extend() รวมค่า
ตัวอย่างโค้ด
my_list = [(43, 15), (66, 98), (64, 80), (14, 9), (47, 17)]
print("The list is:")
print(my_list)
result = []
for sub in my_list:
if result and result[-1][0] == sub[0]:
result[-1].extend(sub[1:])
else:
result.append([ele for ele in sub])
result = list(map(tuple, result))
print("The merged elements are:")
print(result)ผลลัพธ์
The list is: [(43, 15), (66, 98), (64, 80), (14, 9), (47, 17)] The merged elements are: [(43, 15), (66, 98), (64, 80), (14, 9), (47, 17)]
คำอธิบาย
สร้างลิสต์ว่าง
resultเก็บผลลัพธ์ชั่วคราวเป็นลิสต์ (เพื่อให้ extend ได้)วนลูปผ่านทัพเพิลแต่ละคู่ใน
my_listถ้า
resultไม่ว่าง และทัพเพิลล่าสุดมีค่าแรกเท่ากับทัพเพิลปัจจุบัน ให้extendค่าที่เหลือถ้าไม่ตรง ให้เพิ่มทัพเพิลใหม่เข้าไป (แปลงเป็นลิสต์ก่อน)
สุดท้ายแปลงกลับเป็นทัพเพิลด้วย
map(tuple, result)ตัวอย่างนี้ไม่มีทัพเพิลที่มีค่าแรกซ้ำติดกัน จึงไม่มีการรวมเกิดขึ้น