2010-10-15 6 views
71

में पाइथन में सूची में कनवर्ट करने की सूची, मैं सूची को * args में कैसे परिवर्तित करूं?पाइथन

मैं पता करने की जरूरत समारोह

scikits.timeseries.lib.reportlib.Report.__init__(*args) 

, कई time_series वस्तुओं * args के रूप में पारित कर दिया चाहता है क्योंकि जबकि मैं timeseries वस्तुओं की एक सूची है।

किसी भी मदद की बहुत सराहना कर रहा है :)

उत्तर

116

आप एक iterable से पहले * ऑपरेटर का उपयोग कर सकते समारोह कॉल के भीतर यह विस्तार करने के लिए। उदाहरण के लिए:

timeseries_list = [timeseries1 timeseries2 ...] 
r = scikits.timeseries.lib.reportlib.Report(*timeseries_list) 

(नोटिस *timeseries_list से पहले)

python documentation से:

वाक्य रचना * अभिव्यक्ति समारोह कॉल में प्रकट होता है, अभिव्यक्ति एक iterable को मूल्यांकन करना चाहिए। इस पुनरावर्तनीय तत्वों को माना जाता है जैसे कि वे अतिरिक्त स्थितित्मक तर्क थे; यदि स्थितित्मक तर्क x1, ..., xN, और अभिव्यक्ति अनुक्रम y1, ..., yM का मूल्यांकन करती है, तो यह एम + एन स्थिति तर्क x1, ..., xN, के साथ एक कॉल के बराबर है। वाई 1, ..., वाईएम।

+4

इस भूल: http://docs.python.org/reference/expressions.html#calls –

1

*args बस इसका मतलब है कि फ़ंक्शन आमतौर पर एक ही प्रकार के कई तर्क लेता है।

अधिक जानकारी के लिए पायथन ट्यूटोरियल में this section देखें।

+0

मुझे लगता है कि ओपी पहले से ही इस को जानता है। फ़ंक्शन में कई तर्क होते हैं लेकिन उनके पास एक ही सूची होती है जिसे वे एकाधिक तर्क के रूप में पास करना चाहते हैं। –

+0

@ ब्रायन ओकले: दस्तावेज़ जो मैंने समझाया है कि यह कैसे करना है। – intuited

+4

जबकि यह सच है, जिस तरह से आपने अपना उत्तर दिया है, यह कहीं और लिंक बिंदुओं की तरह लगता है। मुझे लगता है कि यदि आपका उत्तर * तर्क का अर्थ है, तो अनपॅकिंग को संबोधित करने के लिए इसका पुन: उपयोग करने के लिए आपका उत्तर अधिक उपयोगी होगा। –

10

हां, * फ़ंक्शन को तर्क देने वाले तर्कों का उपयोग करके पाइथन तर्क में मानों को अनपैक कर देगा और इसे फ़ंक्शन पर पास कर देगा।

तो:

>>> def printer(*args): 
print args 


>>> printer(2,3,4) 
(2, 3, 4) 
>>> printer(*range(2, 5)) 
(2, 3, 4) 
>>> printer(range(2, 5)) 
([2, 3, 4],) 
>>>