วิธีคัดลอกลิสต์ (Copy List) ใน Python: 4 วิธีที่ควรรู้
คุณสามารถคัดลอกลิสต์ใน Python ได้ด้วยเมธอด copy(), การสไลซ์ (slicing), เมธอด list(), และลิสต์คอมเพรเฮนชัน (list comprehension) เมธอด copy() เป็นวิธีตรงไปตรงมาที่สุดในการคัดลอกลิสต์ Python
เมื่อทำงานกับลิสต์ใน Python คุณอาจพบสถานการณ์ที่ต้องการสร้างสำเนาของลิสต์นั้น
เช่น คุณอาจสร้างโปรแกรมที่ใช้รายชื่อนักเรียนปีที่แล้ว สร้างรายชื่อใหม่สำหรับปีการศึกษาใหม่ โปรแกรมควรเก็บรายชื่อเก่าไว้
วิธีคัดลอกลิสต์ใน Python
มีสี่วิธีในการคัดลอกลิสต์ใน Python:
- ใช้ไวยากรณ์สไลซ์ (slicing syntax)
- ใช้เมธอด
copy() - ใช้เมธอด
list() - ประกาศลิสต์คอมเพรเฮนชัน (list comprehension)
บทช่วยสอนนี้จะอธิบายพร้อมตัวอย่าง วิธีใช้ copy(), slicing, list comprehension, และ list() เพื่อสร้างสำเนาลิสต์ใน Python
คุณสามารถใช้เครื่องหมายเท่ากับ (=) เพื่อสร้างสำเนาลิสต์ได้ แต่ลิสต์ใหม่จะเชื่อมโยงกับลิสต์เก่า หมายความว่าหากคุณเปลี่ยนลิสต์ใหม่ ลิสต์เก่าก็จะเปลี่ยนตามไปด้วย ลิสต์ใหม่อ้างอิงถึงออบเจ็กต์เดียวกับลิสต์เก่า
คัดลอกลิสต์ Python: เมธอด copy()
เมธอด copy() ของ Python สร้างสำเนาของลิสต์ที่มีอยู่ เมธอด copy() ถูกเพิ่มท้ายออบเจ็กต์ลิสต์ จึงไม่รับพารามิเตอร์ใดๆ copy() คืนค่าลิสต์ใหม่
Python มีฟังก์ชัน built-in รองรับการสร้าง shallow copy ของลิสต์: copy() คุณสามารถใช้ copy() เพื่อทำซ้ำลิสต์และทิ้งลิสต์เดิมไว้ไม่เปลี่ยนแปลง
เมธอด copy() ไม่รับพารามิเตอร์ ใส่ท้ายชื่อลิสต์ ไวยากรณ์:
new_list = old_list.copy()
ตัวอย่างเมธอด copy() ใน Python
มาดูตัวอย่างการใช้ copy() สมมติเราดำเนินร้านขายผลไม้ และต้องการอัปเดตรายการสินค้าให้สะท้อนผลไม้ฤดูร้อนที่เข้าฤดู
เพื่อทำเช่นนั้น เราต้องการสร้างรายการสินค้าใหม่จากรายการเก่า แต่ต้องการเก็บรายการเก่าไว้ใช้ภายหลัง จะช่วยให้เราติดตามผลิตภัณฑ์ที่ขายได้ในฤดูที่แล้วในลิสต์เก่า และติดตามสิ่งที่ขายในฤดูนี้ในลิสต์ใหม่
เราสามารถใช้ copy() เพื่อทำซ้ำลิสต์และทำภารกิจนี้ได้ ตัวอย่างการใช้ copy() สร้างสำเนารายการผลไม้:
spring_fruits = ['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry'] summer_fruits = spring_fruits.copy() print(summer_fruits)
ผลลัพธ์ของโปรแกรม:
['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry']
บรรทัดแรก เรากำหนดตัวแปร spring_fruits เก็บผลไม้ที่ขายในฤดูใบไม้ผลิ
จากนั้นใช้ copy() สร้างลิสต์ใหม่ summer_fruits ที่มีรายการทั้งหมดจากอาร์เรย์ spring_fruits สุดท้ายพิมพ์อาร์เรย์ summer_fruits ไปที่คอนโซล มองเห็นได้ว่า summer_fruits มีค่าเท่ากับลิสต์ต้นฉบับ — spring_fruits
ตอนนี้เรามีสำเนาลิสต์แล้ว เราสามารถปรับเปลี่ยนให้สะท้อนสินค้าใหม่ได้ โดยใช้เมธอด append() และ remove()
คัดลอกลิสต์ Python: การสไลซ์ (Slicing)
การสไลซ์ (Slicing) เป็นเทคนิคใน Python สำหรับดึงรายการจากลิสต์ ด้วยเทคนิคสไลซ์ คุณสามารถดึงรายการเดี่ยว หลายรายการ หรือทุกรายการที่จัดเก็บในลิสต์ได้ หากสนใจเรียนรู้เพิ่มเติมเกี่ยวกับการสไลซ์ อ่านคู่มือ Python list methods ของเรา
ใช้ตัวอย่างข้างต้นแสดงวิธีใช้สไลซ์คัดลอกลิสต์ สมมติเราดำเนินร้านขายผลไม้ ต้องการสร้างลิสต์ใหม่สำหรับสินค้าฤดูร้อน ที่มีสินค้าฤดูใบไม้ผลิทั้งหมด สามารถทำได้ด้วยการโคลนสไลซ์ (slice cloning)
โค้ดสำหรับสร้างสำเนาลิสต์ด้วย slice cloning:
spring_fruits = ['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry'] summer_fruits = spring_fruits[:] print(summer_fruits)
โค้ดคืนค่า:
['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry']
โค้ดคล้ายตัวอย่างที่สาธิต copy() ความต่างคือ แทนที่จะใช้ copy() เราใช้ไวยากรณ์โคลนของ Python
ไวยากรณ์โคลนคือทวิภาค (colon) ปิดล้อมในวงเล็บเหลี่ยม [:] ตามที่เห็นในตัวอย่าง วิธีนี้สร้างสำเนาของลิสต์เก่า
คัดลอกลิสต์ Python: เมธอด list()
คุณยังสามารถใช้ฟังก์ชัน list() สร้าง copy ของลิสต์ใน Python ได้ เมธอด list() รับพารามิเตอร์หนึ่งตัว: ออบเจ็กต์ที่ต้องการแปลงเป็นลิสต์ ไวยากรณ์:
list(list_name)
ใช้ตัวอย่างร้านขายผลไม้สาธิตเมธอดนี้ ตัวอย่างใช้ list() สร้างลิสต์ผลไม้ฤดูร้อนจากลิสต์ผลไม้ฤดูใบไม้ผลิ:
spring_fruits = ['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry'] summer_fruits = list(spring_fruits) print(summer_fruits)
โค้ดคืนค่าลิสต์ใหม่:
['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry']
มองเห็นได้ว่าการกำหนด list(spring_fruits) ให้ summer_fruits สร้างสำเนาของ spring_fruits และบันทึกเป็น summer_fruits เราพิมพ์ลิสต์ใหม่ไปที่คอนโซลด้วย print()
คัดลอกลิสต์ Python: ลิสต์คอมเพรเฮนชัน (List Comprehension)
คุณสามารถสร้างลิสต์ได้อย่างกระชับด้วยเมธอด list comprehension ของ Python วิธีนี้ใช้นิพจน์ for...in
List comprehension ทำงานโดยวนผ่านทุกรายการในลิสต์ที่มีอยู่ด้วยลูป for และเติมลิสต์ใหม่ด้วยรายการเหล่านั้น
ไวยากรณ์ list comprehension ใน Python:
new_list = [i for i in old_list]
ใช้ตัวอย่างร้านขายผลไม้สาธิต ตัวอย่างใช้ list comprehension สร้างลิสต์ผลไม้ฤดูร้อนใหม่จากลิสต์ผลไม้ฤดูใบไม้ผลิ:
spring_fruits = ['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry'] summer_fruits = [i for i in spring_fruits] print(summer_fruits)
โค้ดใช้ list comprehension สร้างลิสต์ใหม่ชื่อ summer_fruits และคืนค่า:
['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry']
มองเห็นได้ว่าโปรแกรมสร้างลิสต์ summer_fruits ที่มีค่าทั้งหมดจากลิสต์ต้นฉบับ spring_fruits
สรุป
บทช่วยสอนนี้ครอบคลุมสี่วิธีในการสร้างสำเนาลิสต์ใน Python เราอธิบายการใช้ copy(), เทคนิค slice cloning, ฟังก์ชัน list(), และ list comprehension
ตอนนี้คุณมีความรู้พร้อมสร้างสำเนาลิสต์ใน Python แล้ว! หากมองหาแหล่งเรียนรู้หรือคอร์สช่วยเรียน Python ดูคู่มือ How to Learn Python ของเรา