2010-11-06 15 views
60

मैं सूचियों की निम्न सूची ज़िप करना चाहते में सूचियों ज़िप करने के लिए:एक सूची

>>> zip([1,2], [3,4], [5,6]) 
    (1, 3, 5), (2, 4, 6)] 
:

>>> zip([[1,2], [3,4], [5,6]]) 
[[1,3,5], [2,4,6]] 

यह वर्तमान zip कार्यान्वयन केवल तभी सूची अलग-अलग घटकों में विभाजित है के साथ प्राप्त किया जा सकता

सूची को विभाजित करने और व्यक्तिगत तत्वों को zip पर कैसे निकालना है, यह पता नहीं लगा सकता है। एक कार्यात्मक समाधान पसंद किया जाता है।

उत्तर

94

इस प्रयास करें:

>>> zip(*[[1,2], [3,4], [5,6]]) 
[(1, 3, 5), (2, 4, 6)] 

Unpacking Argument Lists देखें:

रिवर्स स्थिति तब होती है जब तर्क सूची या टपल में पहले से ही हैं, लेकिन एक समारोह कॉल अलग स्थितीय तर्कों की आवश्यकता होती है के लिए अनपैक करने की आवश्यकता है । उदाहरण के लिए, अंतर्निर्मित श्रेणी() फ़ंक्शन अलग-अलग प्रारंभ की अपेक्षा करता है और तर्क रोकता है। वे अलग से उपलब्ध नहीं हैं, तो सूची या टपल से बाहर तर्क को अनपैक करने के * -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] 
+3

http://docs.python.org/tutorial/controlflow देखें। एचटीएमएल # अनपॅकिंग-तर्क-सूचियां यह कैसे काम करती है। – ameer

+0

@ameer: ​​धन्यवाद, जोड़ा गया। –

+1

यह मेरी पसंदीदा अंडर-रेटेड पायथन सुविधाओं में से एक है। अक्सर उपयोगी नहीं होता है, लेकिन जब आपको इसकी आवश्यकता होती है तो बहुत सुविधाजनक! – fmark

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