संपादित करें: मेरा बेवकूफ तर्क मेरे आगे हो गया। समझदारी कॉल से कोई भी रिटर्न नहीं है। ठीक है, मैं अजगर में कुछ परीक्षण चला रहा हूं, और मैं निष्पादन आदेशों में थोड़ा अंतर डालता हूं, जो मुझे यह समझने की ओर ले जाता है कि इसे कैसे कार्यान्वित किया जाता है, लेकिन मैं इसे आपके द्वारा ठीक लोगों को चलाने के लिए चाहता हूं देखें कि मैं सही हूं या इसके लिए और भी कुछ है।पायथन सूची समझ व्यवहार के लिए वीएस
>>> a = ["a","b","c","d","e"]
>>> def test(self,arg):
... print "testing %s" %(arg)
... a.pop()
...
>>>[test(elem) for elem in a]
testing a
testing b
testing c
[None, None, None]
>>> a
['a', 'b']
#now we try another syntax
>>> a = ["a","b","c","d","e"]
>>> for elem in a:
... print "elem is %s"%(elem)
... test(elem)
...
elem is a
testing a
elem is b
testing b
elem is c
testing c
>>> a
['a', 'b']
>>>
अब इस मुझसे कहता है कि एक में ELEM के लिए: जबकि समझ किसी भी तरह वास्तव में कोड निष्पादित करने से पहले सूची के प्रत्येक तत्व पर फ़ंक्शन को कॉल हो जाता है अगले iteratable तत्व तो शरीर पर लागू होता है, इस कोड पर विचार करें फ़ंक्शन में, फ़ंक्शन (पॉप) से सूची को संशोधित करने से कोई भी नहीं, कोई नहीं, कोई नहीं]
क्या यह सही है? यहाँ क्या हो रहा है?
धन्यवाद
'परीक्षण()' कुछ भी वापस नहीं करता है, इसलिए यह 'कोई नहीं' देता है। (बीटीडब्ल्यू, आपको 'स्वयं' पैरामीटर को हटाना चाहिए।) –
हां, मैं बस खेल रहा हूं मैं देखना चाहता था कि वे वास्तव में समकक्ष थे ... लेकिन यहां निष्पादन आदेश के लिए कुछ है। – cromestant
एक संग्रह का आकार बदलना (वस्तुओं को जोड़ना या हटाना) जबकि इसे फिर से चालू करना एक दंडनीय अपराध है। – delnan