2012-04-09 10 views
32

मान लें कि मेरे पास समान लंबाई की दो या दो से अधिक सूचियां हैं। उनके माध्यम से फिर से शुरू करने का एक अच्छा तरीका क्या है?एक बार में दो या एकाधिक सूचियों को फिर से चलाने के लिए बेहतर तरीका

a, b सूचियां हैं।

for i, ele in enumerate(a): 
    print ele, b[i] 

या

for i in range(len(a)): 
    print a[i], b[i] 

या वहाँ किसी भी संस्करण मुझे याद आ रही है?

क्या एक दूसरे का उपयोग करने का कोई विशेष लाभ है?

उत्तर

76

हमेशा की तरह zip() उपयोग करने के लिए है:

for x, y in zip(a, b): 
    # x is from a, y is from b 

यह है जब दो iterables a और b के छोटे समाप्त हो रहा है बंद हो जाएगा। ध्यान देने योग्य भी: itertools.izip() (केवल पायथन 2) और itertools.izip_longest() (itertools.zip_longest() पायथन 3) में।

+4

मुझे यह करने के लिए हराया। यह ध्यान देने योग्य हो सकता है कि पायथन 3 का 'ज़िप' * * 'izip' है। इसके अलावा, कोई 'zip_longest' नहीं है लेकिन 'नक्शा (कोई नहीं, ए, बी)' कर सकता है। – ephemient

+2

@ephemient: उत्तरार्द्ध केवल पाइथन 2 पर, बाद में। पायथन 3 पर, यह सबसे कम अनुक्रम पर रुक जाएगा। और 'izip_longest()' को पायथन 3 पर 'zip_longest() 'कहा जाता है ... –

7

आप zip उपयोग कर सकते हैं:

>>> a = [1, 2, 3] 
>>> b = ['a', 'b', 'c'] 
>>> for x, y in zip(a, b): 
... print x, y 
... 
1 a 
2 b 
3 c 
संबंधित मुद्दे

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