ในบทช่วยสอนนี้ เราจะเรียนรู้เกี่ยวกับเมธอด copy ของโครงสร้างข้อมูล set มาดูรายละเอียด
เมธอด copy ใช้สำหรับสร้าง shallow copy (คัดลอกตื้น) ของ set
ลองดูตัวอย่างต่างๆ เพื่อเข้าใจ normal copy (การกำหนดค่า) และ shallow copy ของ set
Normal Copy (การกำหนดค่าปกติ)
ทำตามขั้นตอนและดูผลลัพธ์
- เริ่มต้น set
- กำหนด set ให้ตัวแปรอีกตัวด้วย assignment operator
- เพิ่มสมาชิกใหม่เข้า set ที่ copy
- พิมพ์ทั้งสอง set
คุณจะไม่พบความแตกต่าง Assignment operator คืนค่า reference ทั้งสอง set ชี้ไปยัง object เดียวในหน่วยความจำ การเปลี่ยนแปลงอะไรก็จะสะท้อนในทั้งคู่
ตัวอย่าง
# เริ่มต้น set
number_set = {1, 2, 3, 4, 5}
# กำหนด set ให้ตัวแปรอื่น
number_set_copy = number_set
# เปลี่ยนค่า number_set_copy
number_set_copy.add(6)
# พิมพ์ทั้งสอง set
print(f"Set One: {number_set}")
print(f"Set Two: {number_set_copy}")
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้
Set One: {1, 2, 3, 4, 5, 6}
Set Two: {1, 2, 3, 4, 5, 6}
เห็นได้ว่า set แรกเปลี่ยนไปตาม set ที่สอง เพราะชี้ object เดียวกัน
Shallow Copy ด้วย copy()
เราสามารถใช้ shallow copy คัดลอก set ได้หลายวิธี วิธีหนึ่งคือใช้เมธอด copy() ของ set
ตัวอย่าง
# เริ่มต้น set
number_set = {1, 2, 3, 4, 5}
# shallow copy ด้วย copy()
number_set_copy = number_set.copy()
# เปลี่ยนค่า number_set_copy
number_set_copy.add(6)
# พิมพ์ทั้งสอง set
print(f"Set One: {number_set}")
print(f"Set Two: {number_set_copy}")
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้
Set One: {1, 2, 3, 4, 5}
Set Two: {1, 2, 3, 4, 5, 6}
ครั้งนี้ set แรกไม่เปลี่ยนแปลง เพราะ copy() สร้าง object ใหม่
สรุป
Assignment (=) คัดลอก reference, copy() สร้าง shallow copy object ใหม่ หากมีข้อสงสัย กรุณาแจ้งในส่วนความคิดเห็น