दिलचस्प पोस्ट
एसक्यूएल दो तालिका में शामिल हो इन-लाइन सीएसएस के बारे में क्या बुरा है? स्ट्रिंग को Int सी ++ में परिवर्तित करें परिपत्र नई गतिविधि के लिए संक्रमण का पता चलता है जावा में सिंगलटन पैटर्न को लागू करने का एक प्रभावी तरीका क्या है? जावा (डेस्कटॉप) अनुप्रयोग के लिए "स्वचालित अद्यतन"? एक दृश्य / लेआउट को दूसरे लेआउट में बढ़ाएं? एक ईवेंट हैंडलर को रोकने के लिए सी # पैटर्न दो बार दोगुना file_get_contents कुकीज़ प्राप्त करते हैं एसवीजी में पाठ तत्व की ऊर्ध्वाधर संरेखण आप जावा के भीतर CLASSPATH कैसे बदल सकते हैं? PowerShell से UTF-8 आउटपुट एचईएल फाइल से टैग निकालें Std :: end कैसे एक सरणी के अंत पता है? वसंत एमवीसी जेसन सामग्री नहीं लौट रहा है – त्रुटि 406

प्रत्येक सूची तत्व पर ईटी () कॉल कॉल करें?

मेरे पास संख्यात्मक स्ट्रिंग्स के साथ एक सूची है, जैसे:

numbers = ['1', '5', '10', '8']; 

मैं हर सूची तत्व को पूर्णांक में कनवर्ट करना चाहता हूं, इसलिए यह इस प्रकार दिखता है:

 numbers = [1, 5, 10, 8]; 

मैं इसे एक पाश का उपयोग कर कर सकता हूं, जैसे:

 new_numbers = []; for n in numbers: new_numbers.append(int(n)); numbers = new_numbers; 

क्या यह इतना बदसूरत होना चाहिए? मुझे यकीन है कि यह कोड की एक पंक्ति में ऐसा करने के लिए एक और अजगर तरीका है। कृपया मेरी मदद करें।

Solutions Collecting From Web of "प्रत्येक सूची तत्व पर ईटी () कॉल कॉल करें?"

यह सूची सूची के लिए है:

 numbers = [ int(x) for x in numbers ] 

अजगर 2.x में एक अन्य दृष्टिकोण map का उपयोग करना है:

 numbers = map(int, numbers) 

नोट: पायथन 3.x map एक मैप ऑब्जेक्ट लौटाता है जो आप चाहें तो सूची में कनवर्ट कर सकते हैं:

 numbers = list(map(int, numbers)) 

सिर्फ एक बिंदु,

 numbers = [int(x) for x in numbers] 

सूची की समझ अधिक स्वाभाविक है, जबकि

 numbers = map(int, x) 

ज्यादा तेज़ है।

शायद अधिकांश मामलों में इससे कोई फर्क नहीं पड़ेगा

उपयोगी पठन: एलपी बनाम नक्शा

यदि आप किसी फ़ंक्शन या विधि से उन पूर्णांक पारित करने का इरादा रखते हैं, तो इस उदाहरण पर विचार करें:

 sum(int(x) for x in numbers) 

यह निर्माण जानबूझकर अदम के द्वारा उल्लिखित सूची आकांक्षाओं के समान है। वर्ग कोष्ठक के बिना, इसे जनरेटर अभिव्यक्ति कहा जाता है, और एक विधि से तर्कों की एक सूची को पारित करने का एक बहुत ही स्मृति-कुशल तरीका है। एक अच्छी चर्चा यहां उपलब्ध है: जनरेटर अभिव्यक्ति बनाम सूची समझ

दूसरा रास्ता,

 for i, v in enumerate(numbers): numbers[i] = int(v) 

पायथन 3 में इसे बनाने का दूसरा तरीका:

numbers = [*map(int, numbers)]