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

จะโคลนหรือคัดลอกรายการใน Python ได้อย่างไร


ใน Python ตัวดำเนินการมอบหมายจะไม่สร้างวัตถุใหม่ แต่จะตั้งชื่ออื่นให้กับวัตถุที่มีอยู่แล้ว สามารถตรวจสอบได้ด้วยฟังก์ชัน id()

>>> L1 =[1,2,3,4]>>> L2 =L1>>> id(L1)185117137928>>> id(L2)185117137928

หากต้องการคัดลอกรายการให้ใช้วิธีการต่อไปนี้

ตัวดำเนินการสไลซ์:ตัวดำเนินการสไลซ์สองตัวคือดัชนีของจุดเริ่มต้นและจุดสิ้นสุดของสไลซ์ หากไม่ได้ใช้อย่างชัดแจ้ง ทั้งสองค่าเริ่มต้นจะเริ่มต้นการสิ้นสุดของลำดับ เราสามารถใช้ประโยชน์จากคุณลักษณะนี้

<ก่อนหน้า>>>> L1 =[1,2,3,4]>>> L2 =L1[:]>>> L1[1, 2, 3, 4]>>> L2[1, 2, 3, 4]>>>> id(L1)185117025160>>> id(L2)185117171592

อีกวิธีหนึ่งคือการใช้วิธี list() ในตัว

<ก่อนหน้า>>>> L1 =[ 1,2,3,4]>>> L2 =รายการ(L1)>>> L1[1, 2, 3, 4]>>> L2[1, 2, 3, 4]>>>> id(L1)185117295816>>> id(L2)185117209352

โมดูลคัดลอกของไลบรารีมาตรฐานของ Python มีฟังก์ชันสำหรับการคัดลอกวัตถุแบบตื้นและลึก ในขณะที่การคัดลอกแบบลึกคือการคัดลอกแบบซ้อน ในสำเนาแบบตื้น รายการภายในจะถูกคัดลอกโดยการอ้างอิงเท่านั้น

>>> คัดลอกนำเข้า>>> L1 =[1,2,3,4]>>> L2 =copy.copy(L1)>>> L1[1, 2, 3, 4]>>>> L2 [1, 2, 3, 4]>>>> id(L1)185117025160>>> id(L2)185117295880>>> L3=copy.deepcopy(L1)>>>> L3[1, 2, 3, 4]>>> id(L3)185117304328