2015-08-12 9 views
9

में अभिव्यक्ति सूचियों को समझने के लिए कैसे जब मैं आज अजगर दस्तावेज़ पढ़, मैं Python Documents पर Expression lists पाया, इस तरह की साइट पर विवरण:अजगर

expression_list ::= expression ("," expression)* [","]

एक अभिव्यक्ति युक्त सूची में कम से कम एक कॉमा एक ट्यूपल पैदा करता है। टुपल की लंबाई सूची में अभिव्यक्तियों की संख्या है। अभिव्यक्तियों का मूल्यांकन बाएं से दाएं से किया जाता है।

पिछला कॉमा केवल एक एकल ट्यूपल (ए.के.ए. सिंगलटन) बनाने के लिए आवश्यक है; यह अन्य सभी मामलों में वैकल्पिक है। पिछली कॉमा के बिना एक अभिव्यक्ति एक ट्यूपल नहीं बनाती है, बल्कि उस अभिव्यक्ति के मूल्य को उत्पन्न करती है। (एक खाली टपल बनाने के लिए, कोष्ठकों के एक खाली जोड़ी का उपयोग करें:।())

क्योंकि उदाहरण साइट पर नहीं दिया जाता है, तो मैं बस सोच किसी को भी इस बारे में एक संक्षिप्त विवरण दे सकते हैं, और देना इसके उपयोग के बारे में एक उदाहरण। बहुत बहुत धन्यवाद

+1

भाषा संदर्भ भाषा का एक "ट्यूटोरियल" शैली विवरण के रूप में इस्तेमाल किया जा करने के लिए नहीं है, यह भाषा निर्दिष्ट करने के लिए होती है। उदाहरणों के लिए आपको शायद इसके बजाय ट्यूटोरियल पढ़ना चाहिए - और अधिकांश लोगों के लिए यह ट्यूटोरियल है जिसे पहले पढ़ना चाहिए। ट्यूटोरियल पढ़ने के बाद भाषा संदर्भ अधिक स्पष्ट हो जाएगा। – skyking

+0

यह भाषा निर्दिष्ट करता है, यह आपको सूचियां बनाने के लिए सिखाता नहीं है। यह अजगर दस्तावेज है, न कि "पायथन दस्तावेज़"। यह "बहुत बहुत धन्यवाद" है, न कि "बहुत बहुत धन्यवाद"। –

उत्तर

8

यहाँ कुछ नमूने मदद करने के लिए आप समझ क्या चल रहा है कर रहे हैं:

एक अभिव्यक्ति सूची जिसमें कम से कम एक कॉमा होता है, एक ट्यूपल उत्पन्न करता है।

इसका मतलब है कि यदि आपके पास 1,2 है, तो यह एक टुपल बनाएगा। लंबाई यह है कि आपके पास कितनी चीज़ें हैं।

पिछला कॉमा केवल एक एकल टुपल (ए.के.ए. सिंगलटन) बनाने के लिए आवश्यक है; यह अन्य सभी मामलों में वैकल्पिक है।

यह मतलब है कि आप एक आइटम के साथ एक टपल बनाना चाहते हैं, तो आप इस 1, की तरह, अंत में एक अल्पविराम की आवश्यकता है अन्यथा:

पीछे बिना अल्पविराम नहीं करता है एक एकल अभिव्यक्ति एक tuple, नहीं बनाते हैं, बल्कि उस अभिव्यक्ति के मूल्य उत्पन्न करता है।

तो 1 एक टुपल नहीं बना रहा है, एक्सप्रेस का मूल्यांकन किया जाएगा क्या होगा। यह एक स्पष्ट बिंदु की तरह लगता है, लेकिन यह समझ में आता है अगर तुम (1) बारे में और उसके बाद उम्मीद है कि यह एक Tupe के रूप में मूल्यांकन किया जाना ((1) के मामले में, यह पूर्णांक मान 1 लिए मूल्यांकन किया जाएगा)।

अंत में

(एक खाली टपल बनाने के लिए, कोष्ठकों के एक खाली जोड़ी का उपयोग करें:।())

आप अभिव्यक्ति के रूप में एक खाली टपल बनाना चाहते हैं किसी कारण हैं, निम्नलिखित विशेष वाक्यविन्यास का उपयोग करें ()

() विशेष रूप से ट्यूपल्स के मामले में() की आवश्यकता नहीं है, लेकिन यह आवश्यक नहीं है - हालांकि कभी-कभी यह पठनीयता के साथ मदद करता है। 1,2 और (1,2) बराबर हैं:

>>> a = 1,2 
>>> type(a) 
<type 'tuple'> 

>>> b = (1,2) 
>>> type(b) 
<type 'tuple'> 

>>> a == b 
True 
+0

धन्यवाद दोस्त, मुझे यह पता है, लेकिन दस्तावेज़ों ने 'अभिव्यक्ति_सूची :: = अभिव्यक्ति ("," अभिव्यक्ति) * [","] लिखा क्यों? मैं समझ नहीं पा रहा हूं कि इसका क्या अर्थ है। क्या यह एक नियमित अभिव्यक्ति है? –

+0

ओह, नहीं, यह सिर्फ अभिव्यक्ति का वाक्यविन्यास है। यह अभिव्यक्ति सूची को पार्स करने का वर्णन कर रहा है (यानी, यह टोकन पार्सर जैसा दिखता है)। –

+0

ध्यान दें कि अभिव्यक्ति सूची में पेरेथेस शामिल नहीं हैं, इसके परिणामस्वरूप शुरुआत में आपके उदाहरण थोड़ा भ्रामक हैं। वे अभिव्यक्ति सूचियां होने के लिए '1, 2',' 1, 'और 1 होना चाहिए। – skyking

4

यह बात आप कैसे लिखते हैं tuples के बारे में। के रूप में

>>> 7*8, 5-6 
(56, -1) 

tuples आमतौर पर स्पष्टता के लिए उनके आसपास कोष्ठकों के साथ लिखा जाता है, लेकिन वे अनावश्यक हैं

उदाहरण के लिए,

>>> 1, 2 
(1, 2) 

, एक दो तत्व टपल है; 0-तत्व ट्यूपल, () के मामले में छोड़कर।

एक-तत्व tuples, एक और अपवाद नहीं हैं वहाँ के रूप में यह अल्पविराम के लिए अनिवार्य है: अल्पविराम यह सामान्य संख्या 1 से अलग करने के लिए संभव नहीं होगा बिना

>>> 1, 
(1,) 

। तुम भी बहु तत्व tuples के बाद एक अतिरिक्त अल्पविराम जोड़ सकते हैं, लेकिन यह उस मामले में कुछ नहीं करता:

>>> 1, 2, 
(1, 2)