บทนำ
เมื่อมี tuple ที่แต่ละ element เป็นลิสต์ และต้องการเรียงลำดับแต่ละลิสต์แยกกัน สามารถใช้ sorted() ร่วมกับ generator expression แล้วแปลงกลับเป็น tuple ได้
ตัวอย่างโค้ด
my_tuple = ([4, 55, 100], [44, 55, 67], [7, 86, 0])
print("Tuple เดิม:", my_tuple)
# เรียงแต่ละ sublist แล้วรวมเป็น tuple ใหม่
sorted_tuple = tuple(sorted(sublist) for sublist in my_tuple)
print("หลังเรียงลำดับ:", sorted_tuple)
ผลลัพธ์
Tuple เดิม: ([4, 55, 100], [44, 55, 67], [7, 86, 0]) หลังเรียงลำดับ: ([4, 55, 100], [44, 55, 67], [0, 7, 86])
คำอธิบาย
sorted(sublist)เรียงลำดับลิสต์แต่ละอัน (สร้างลิสต์ใหม่)tuple(... for sublist in my_tuple)generator expression สร้าง tuple ใหม่จากผลลัพธ์- Tuple เดิมไม่เปลี่ยนแปลง (immutable) แต่ลิสต์ภายในถูกสร้างใหม่
วิธีอื่น: เรียงแบบ in-place (ถ้าต้องการแก้ลิสต์เดิม)
for sublist in my_tuple:
sublist.sort() # เรียงลิสต์เดิมโดยตรง
print(my_tuple)
หมายเหตุ: วิธีนี้เปลี่ยนลิสต์ภายใน tuple เดิมโดยตรง