ใน Python (2 และ 3) เมื่อใดก็ตามที่เราใช้การแบ่งรายการมันจะส่งคืนวัตถุใหม่เช่น:
l1 = [1,2,3,4]
print(id(l1))
l2 = l1[:]
print(id(l2))
เอาท์พุต
>>> 140344378384464
>>> 140344378387272
หากสิ่งเดียวกันซ้ำกับ tuple วัตถุเดียวกันจะถูกส่งกลับเช่น:
t1 = (1,2,3,4)
t2 = t1[:]
print(id(t1))
print(id(t2))
เอาท์พุต
>>> 140344379214896
>>> 140344379214896
มันจะดีถ้ามีใครบางคนสามารถทำให้เข้าใจว่าทำไมสิ่งนี้ถึงเกิดขึ้นตลอดประสบการณ์ Python ของฉันฉันอยู่ภายใต้การแสดงผลชิ้นส่วนที่ว่างเปล่าส่งคืนวัตถุใหม่
ความเข้าใจของฉันคือการส่งคืนวัตถุเดียวกันกับสิ่งอันดับที่ไม่เปลี่ยนรูปและไม่มีจุดสร้างสำเนาใหม่ แต่ก็ไม่ได้กล่าวถึงในเอกสารทุกที่
l2 = tuple(iter(l1))
ข้ามการปรับให้เหมาะสม
PyTuple_GetSlice
ได้รับเอกสารไม่ถูกต้องหลังจากเห็นคำถามของคุณ ขณะนี้เอกสารได้รับการแก้ไขแล้ว (นี่คือปัญหาbpo 38557 )