2010-07-07 10 views
17

चलो कहते हैं कि मैं इस तरह एक विधि परिभाषा करते हैं:मैं एक ट्यूपल कैसे विस्फोट कर सकता हूं ताकि इसे पैरामीटर सूची के रूप में पारित किया जा सके?

def myMethod(a, b, c, d, e) 

फिर, मैं एक चर और इस तरह एक टपल है:

myVariable = 1 
myTuple = (2, 3, 4, 5) 

वहाँ एक रास्ता मैं इतना है कि टपल विस्फोट पारित कर सकते हैं है मैं अपने सदस्यों को पैरामीटर के रूप में पास कर सकता हूं? कुछ इस तरह (हालांकि मैं जानता हूँ कि इस पूरे टपल के रूप में काम नहीं करेगा माना जाता है दूसरा पैरामीटर):

myMethod(myVariable, myTuple) 

मैं व्यक्तिगत रूप से यदि संभव हो तो प्रत्येक टपल सदस्य को संदर्भित से बचना चाहते हैं ...

+0

[बहस में tuples विस्तार] की संभावित डुप्लिकेट (https://stackoverflow.com/questions/1993727/expanding-tuples-into-arguments) –

उत्तर

33

आप argument unpacking ऑपरेटर * लिए देख रहे हैं:

myMethod(myVariable, *myTuple) 
+2

सूचियों के लिए भी काम करता है (ओपी के लाभ के लिए) –

+0

यह भीटरेटर के लिए काम करता है। – unutbu

+0

अच्छा, धन्यवाद! (मैंने सोचा था कि मैंने एक विधि के बारे में पढ़ा था ... अभी भी पाइथन के लिए बहुत नया है और यह सुनिश्चित नहीं था कि इसके लिए कैसे खोज करें।) – froadie

7

Python documentation से:

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

>>> range(3, 6)    # normal call with separate arguments 
[3, 4, 5] 
>>> args = [3, 6] 
>>> range(*args)   # call with arguments unpacked from a list 
[3, 4, 5] 

एक ही फैशन में, शब्दकोशों वितरित कर सकते हैं साथ ** कीवर्ड तर्क - ऑपरेटर:

>>> def parrot(voltage, state='a stiff', action='voom'): 
...  print "-- This parrot wouldn't", action, 
...  print "if you put", voltage, "volts through it.", 
...  print "E's", state, "!" 
... 
>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"} 
>>> parrot(**d) 
-- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised ! 
संबंधित मुद्दे

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