2012-08-02 3 views
5

संभव डुप्लिकेट:
Creating a list in Python- something sneaky going on?
Creating an empty list in PythonMyList = सूची() MyList बनाम = [] अजगर में

पर विचार निम्नलिखित:

mylist = list() 

और:

mylist = [] 

list() या [] का उपयोग करने के लिए कोई लाभ है - किसी को किसी अन्य स्थिति में किसी दूसरे पर उपयोग किया जाना चाहिए?

+2

मुझे लगता है कि '[] 'शाब्दिक तेज होगा क्योंकि यह फ़ंक्शन कॉल सहेजता है, लेकिन मैं पहले गलत हूं। क्या आपने इसे मापने की कोशिश की? –

+1

@ FrédéricHamidi - मुझे पूरा यकीन है कि मैंने इसे पहले एक एसओ पोस्ट में देखा है। मैं इसे खोजने की कोशिश करूंगा ... – mgilson

+0

मैंने मापने की कोशिश नहीं की है, मैं जल्द ही कोशिश करूँगा और अपडेट करूँगा, धन्यवाद फ्रेडरिक – Sherlock

उत्तर

16

एक खाली सूची के लिए, मैं [] का उपयोग करने की सलाह दूंगा। यह तेज़ होगा, क्योंकि यह अंतर्निहित नाम list के लिए नाम लुक-अप से बचाता है। अंतर्निहित नाम को वैश्विक या स्थानीय नाम से ओवरराइट किया जा सकता है; यह केवल list() को प्रभावित करेगा, [] नहीं।

list() में निर्मित एक सूची में कुछ अन्य iterable कन्वर्ट करने के लिए, हालांकि उपयोगी है:

a = (1, 2, 3) 
b = list(a) 

पूर्णता के लिए, मेरे मशीन पर खाली सूचियों के लिए दो विकल्पों के लिए समय (अजगर 2.7.3rc2, इंटेल कोर 2 डुओ):

In [1]: %timeit [] 
10000000 loops, best of 3: 35 ns per loop 

In [2]: %timeit list() 
10000000 loops, best of 3: 145 ns per loop 
+0

स्पष्ट> निहित के बारे में क्या? जब मैं "सूची()" देखता हूं तो मैं एक आंख नहीं बल्लेबाजी करता हूं। अगर मुझे लगता है कि "[]" मुझे दो बार लगता है, खासकर जब मुझे पता चला कि पाइथन दोनों dict() और सेट() के लिए {} शुरू कर रहा है: o – gsk

+4

@gsk: दो तत्वों के साथ एक सूची '[1, 2] '; एक तत्व के साथ एक सूची: '[1]'; तत्वों के बिना एक सूची '[] '। मुझे बहुत स्पष्ट लगता है। मुझे पता है कि एक ही उदाहरण पायथन 3 में सेट के लिए अलग दिखता है - यह 3.x के लिए एकमात्र डिज़ाइन निर्णय के बारे में है जो मुझे पसंद नहीं है। –

+1

@gsk और मुझे दो बार लगता है जब सूची() पैरामीटर के बिना बुलाया जाता है। [] मेरे लिए अधिक स्पष्ट है, और परिभाषा के अनुसार है ... क्योंकि यह परिभाषा है। – Logan

4

दो, पूरी तरह से बराबर हैं सिवाय इसके कि यह पहचानकर्ता list को फिर से परिभाषित करने के लिए एक अलग वस्तु का उल्लेख करना संभव है। तदनुसार, [] का उपयोग करना सुरक्षित नहीं है जब तक कि आप list को एक नया प्रकार के रूप में फिर से परिभाषित करने में सक्षम नहीं होना चाहते हैं।

तकनीकी रूप से, [] का उपयोग करके बहुत तेज़ होगा, क्योंकि यह नाम लुकअप से बचाता है। यह किसी भी मामले में महत्वपूर्ण होने की संभावना नहीं है, जब तक कि कार्यक्रम लगातार और उग्र रूप से सूचियों को आवंटित नहीं कर लेता है।

स्वेन नोट्स के रूप में, list के अन्य उपयोग हैं, लेकिन निश्चित रूप से सवाल उन लोगों के बारे में नहीं पूछता है।