2012-06-07 5 views
5

निम्न उदाहरण मैप करने के लिए फ़ंक्शन कॉल के अंदर स्ट्रिंग फ़ंक्शन का उपयोग करने का प्रयास करते समय त्रुटि प्राप्त करता है। मुझे यह क्यों हो रहा है के साथ मदद चाहिए। धन्यवाद।मैप() के अंदर स्ट्रिंग फ़ंक्शंस का उपयोग क्यों नहीं कर सकता?

>>> s=["this is a string","python python python","split split split"] 
>>> map(split,s) 
Traceback (most recent call last): 
    File "<pyshell#16>", line 1, in <module> 
    map(split,s) 
NameError: name 'split' is not defined 

हालांकि split() एक में निर्मित समारोह है, लेकिन यह अभी भी इस त्रुटि फेंकता है?

उत्तर

14

यह ठीक है अगर आप str.split()

Ie का उपयोग काम करेंगे,

s = ["this is a string","python python python","split split split"] 
map(str.split, s) 

देता है:

[['this', 'is', 'a', 'string'], 
['python', 'python', 'python'], 
['split', 'split', 'split']] 

त्रुटि संदेश में कहा गया है: NameError: name 'split' is not defined, तो दुभाषिया को नहीं पहचानता है split क्योंकि splitbuilt-in function नहीं है । इस काम के लिए आपको अंतर्निहित str ऑब्जेक्ट के साथ split को जोड़ना होगा।

अद्यतन: शब्दों @ IVC के उपयोगी टिप्पणी/सुझावों के आधार पर सुधार।

+0

आह! मुझे यह मिला, 'विभाजन() 'ऑब्जेक्ट प्रकार से संबंधित एक विधि है (' स्ट्रिंग', 're' आदि के लिए अलग) और फ़ंक्शन में निर्मित नहीं है, इसलिए मुझे अस्पष्टता को हटाने के लिए ऑब्जेक्ट प्रकार निर्दिष्ट करने की आवश्यकता है। –

+2

यह असंबद्ध नहीं है, बल्कि इसकी वजह है कि इसकी एक स्ट्रिंग विधि - 'blah'.split (' a ') '' str.split (' blah ',' a ')' के बराबर है, जैसा कि 'exampleofmyclass' .mymethod (arg) '' MyClass.mymethod (exampleofmyclass, arg) के बराबर है '- स्ट्रिंग' str.split' 'के लिए' self' तर्क है। – lvc

+11

यह बदसूरत है। मैं विधि को विधि की तरह कॉल करना चाहता हूं, उदा। 'नक्शा (लैम्ब्डा एक्स: x.split(), एस)', या बेहतर, बस x [x.split() x में x के लिए जाएं ' –

2

split एक अंतर्निहित कार्य नहीं है, हालांकि str.split एक अंतर्निहित वस्तु का एक तरीका है। आम तौर पर, आप str ऑब्जेक्ट की विधि के रूप में विभाजन को कॉल करेंगे, इसलिए यही कारण है कि यह सीधे बाध्य है।

चेक दुभाषिया से उत्पादन:

>>> str 
<type 'str'> 
>>> str.split 
<method 'split' of 'str' objects> 
+0

मुझे विश्वास नहीं है कि यह सही है (str.stplit एक अंतर्निहित फ़ंक्शन है)। यह यहां सूचीबद्ध नहीं है: http://docs.python.org/library/functions.html, और str से जुड़ी स्पष्ट, इसलिए एक विधि। – Levon

+0

आप सही हैं। मेरे पास अंतर्निहित लिखित विधि होनी चाहिए। –

+0

@ जेफ मैंने इसे आपके लिए बदल दिया। – jamylak

संबंधित मुद्दे