2012-08-12 17 views
14

मैं अजगर और एक अजगर समारोह है कि पैरामीटर के रूप में एक सूची/सरणी वाणी के लिए एक तर्क के रूप में एक सरणी पारित करने के लिए प्रयास कर रहा करने के लिए एक पूरा नौसिखिया हूँ।एक सरणी मानकों के साथ एक अजगर समारोह की घोषणा और समारोह कॉल करने के लिए एक सरणी तर्क गुजर?

मुझे यकीन है कि मैं गलत यह घोषणा कर रहा हूँ हूँ,

यहाँ जाता है:

def dosomething(listparam): 
     #do something here 
dosomething(listargument) 

जाहिर है इस काम नहीं कर रहा, मैं गलत क्या कर रहा हूँ?

धन्यवाद

+2

यह काम करना चाहिए यहाँ एक उदाहरण है। क्या आप कुछ असली कोड दिखा सकते हैं? – stranac

+1

आप कुछ और संदर्भ, शायद वास्तविक कोड है कि विफल रहता है प्रदान कर सकता है? (यदि संभव हो, तो इसे एक [अच्छा उदाहरण] बनाएं (http://sscce.org/))। और * घोषणा * से आपका क्या मतलब है? – phihag

+0

ओह हाँ यह बिल्कुल मेरा बुरा है ... मैं यह कर रहा था: एक्स श्रेणी में (लेन (सूची)): प्रिंट x; प्रिंट सूची के बजाय [x] ... धन्यवाद सब! – user1020069

उत्तर

19

आपके पास सही ट्रैक पर क्या है। जबकि पुनरावृत्ति सी-परिवार भाषाओं में विपरीत, आप अक्सर सूचकांक पर नज़र रखने के साथ परेशान करने के लिए की जरूरत नहीं है:

1 
2 
3 
red 
green 
blue 

योग्य कुछ बातें ऊपर अपनी टिप्पणी दी गौर करने योग्य

def dosomething(thelist): 
    for element in thelist: 
     print element 

dosomething(['1','2','3']) 
alist = ['red','green','blue'] 
dosomething(alist) 

उत्पादन का उत्पादन एक सूची में, जब तक कि सूचकांक स्वयं महत्वपूर्ण न हो। क्या तुम सच में सूचकांक की जरूरत है, तो हालांकि, आप enumerate(list) का उपयोग नहीं बल्कि x in range(len(thelist)) नृत्य कर से index,element जोड़े प्राप्त करने के लिए, कर सकते हैं।

+1

मुझे लगता है कि आपका मतलब है 'एन्युमरेट (सूची) ' –

+0

ओह, ज़ाहिर है, मेरा बुरा। –

6

शायद तुम सरणी के तत्वों खोल अगर मुझे मिल गया, मुझे पता नहीं करना चाहते हैं, लेकिन एक उदाहरण नीचे:

def my_func(*args): 
    for a in args: 
     print a 

my_func(*[1,2,3,4]) 
my_list = ['a','b','c'] 
my_func(*my_list) 
3

मुझे लगता है मैं क्या ओ पी वास्तव में के लिए पूछ रहा था के बारे में स्पष्ट नहीं कर रहा हूँ .. क्या आप पूरे सरणी/सूची को पास करना चाहते हैं और फ़ंक्शन के अंदर इसे संचालित करना चाहते हैं? या आप सरणी/सूची में प्रत्येक मूल्य/वस्तु पर वही काम करना चाहते हैं। यदि उत्तरार्द्ध आपकी इच्छा है तो मुझे एक विधि मिल गई है जो अच्छी तरह से काम करती है।

मैं ऐसे फोरट्रान और सी के रूप में प्रोग्रामिंग भाषाओं, जिसमें आप मौलिक कार्य करता है जो एक सरणी के अंदर प्रत्येक तत्व पर काम परिभाषित कर सकते हैं के साथ परिचित हूँ। आखिर में मैंने पाइथन को इसके बराबर ट्रैक किया और सोचा कि मैं यहां समाधान को दोबारा पोस्ट करूंगा। कुंजी को 'vectorize' कुंजी है।

def myfunc(a,b): 
    if (a>b): return a 
    else: return b 
vecfunc = np.vectorize(myfunc) 
result=vecfunc([[1,2,3],[5,6,9]],[7,4,5]) 
print(result) 

आउटपुट::

[[7 4 5] 
[7 6 9]]