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

วิธีคัดลอกลิสต์ (Copy List) ใน Python: 4 วิธีที่ควรรู้

วิธีคัดลอกลิสต์ (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 ของเรา