2012-06-16 11 views
5

आइए कहें कि एक समारोह func() है जिसमें दो तर्क, a और b लेते हैं। क्या पाइथन में एक ही सूची mylist पास करने के लिए कुछ प्रकार की तकनीक है जिसके पास फ़ंक्शन के लिए दोनों मान हैं?फ़ंक्शन में एकाधिक तर्कों के बजाय मानों की एक सूची को पास कर रहा है?

def myfunc(a, b): 
    return a+b 

myfunc([1, 2]) 

तो एक पूरी तरह से यकीन है कि वह हमेशा एक ही समारोह बुला रहा था और पता था कि यह कितने तर्क लेता है, एक कुछ इस तरह कर सकता है: यदि आप सूचियों आप की जरूरत है

mylist = [1, 2] 
a, b = mylist 

myfunc(a, b) 

लेकिन क्या कुछ कार्यों को खिलाने के लिए, और प्रत्येक के पास अलग-अलग तर्क हैं? कोई भी अपने प्रत्येक फ़ंक्शन के लिए अलग-अलग सूचियों को सूची में अनपैक करने के लिए कोड की अलग-अलग पंक्तियां लिख सकता है और उन्हें संबंधित कार्यों में भेज सकता है, लेकिन यदि पाइथन के पास अलग-अलग तर्क मानों की बजाय एक सूची को पास करने के लिए अंतर्निहित कुछ है (जब पहले से सुनिश्चित किया जा रहा हो उस सूची में मूल्यों की इसी राशि है), तो यह बहुत बेहतर दिखाई देगी और सबसे महत्वपूर्ण रूप से कोड की बहुत कम लाइनों की आवश्यकता होगी।

उत्तर

8

आप *unpack the list into arguments करने के लिए उपयोग कर सकते हैं:

myfunc(*mylist) 
+3

मुझे पता था कि अजगर कुछ इस तरह होता है की हो सकता है! –

+3

@ user975135 यह डिक्ट्स के साथ भी किया जा सकता है, जो कीवर्ड तर्कों के लिए उपयोगी है या कई तर्कों के साथ कॉलिंग फ़ंक्शंस: 'mydict = {' a ': 1,' b ': 2} 'myfunc (** mydict)' – Darthfett

4
def myfunc(a, b): 
    return a+b 

mylist = [1, 2] 
myfunc(*mylist) 

यहाँ mylistlist, tuple, string आदि लंबाई 2.

+0

+1, कोई अनुक्रम नहीं हो सकता है, सिर्फ एक सूची है – PaulMcG

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