2010-03-16 44 views
6

इस कोड है नहीं है?अजगर सूची में एक ही संदर्भ

+0

इस प्रयास करें यह भी व्यावहारिक हो सकता है,: 'एल [:]: 'परीक्षण is' कोई नहीं या अन्य एकमात्र (वर्ग या मॉड्यूल की तरह) के खिलाफ जांच करने के लिए,' – fortran

+0

रिजर्व अन्यथा, आप कर रहे हैं एल है [] सबसे अधिक संभावना '==' परीक्षण में दिलचस्पी है (और हाँ, मुझे पता है कि '1 1 है 1' आम तौर पर सीपीथॉन दुनिया में सच होता है, लेकिन यह एक अच्छा विचार नहीं बनाता है)। – PaulMcG

उत्तर

14

L[:] (स्लाइस नोटेशन) का अर्थ है: संपूर्ण सूची, तत्व द्वारा तत्व की एक प्रति बनाएं।

तो आपके पास दो सूचियां हैं जिनमें समान सामग्री है, लेकिन अलग-अलग संस्थाएं हैं। चूंकि is ऑब्जेक्ट पहचान का मूल्यांकन करता है, यह False देता है।

L == L[:]True देता है।

6

संदेह में id के लिए पूछना है;)

>>> li = [1,2,4] 
>>> id(li) 
18686240 
>>> id(li[:]) 
18644144 
>>> 
2

सूची के getslice विधि है, जिसमें कहा जाता है कि जब आप एल [] करने के लिए, एक सूची लौटाती है; इसलिए, जब आप इसे ':' तर्क के साथ कहते हैं, तो यह अलग-अलग व्यवहार नहीं करता है, यह मूल तत्वों के समान तत्वों के साथ एक नई सूची देता है।

>>> id(L) 
>>> id(L[:]) 
>>> L[:] == L 
True 
>>> L[:] is L 
False 
संबंधित मुद्दे