2009-10-23 10 views
6

तो मैं तीन सूचियों है:पायथन में, क्या मैं इंडेक्स नंबर के अनुसार 3 सूचियों को प्रिंट कर सकता हूं?

['this', 'is', 'the', 'first', 'list'] 
[1, 2, 3, 4, 5] 
[0.01, 0.2, 0.3, 0.04, 0.05] 

वहाँ एक रास्ता है कि मुझे सूचकांक द्वारा आदेश में इन सूचियों में मानों को मुद्रित करने की अनुमति होगी है?

उदा।

this, 1, 0.01 (all items at list[0]) 
is, 2, 0.2 (all items at list[1]) 
the, 3, 0.3 (all items at list[2]) 
first, 4, 0.04 (all items at list[3]) 
list, 5, 0.05 (all items at list[4]) 

प्रत्येक सूची में आइटम्स की संख्या हर बार स्क्रिप्ट चलाने है भिन्न होता है, लेकिन वे हमेशा अंत में मानों की एक ही नंबर के साथ खत्म। तो, एक बार, स्क्रिप्ट 30 आइटम, एक और समय के साथ तीन सरणियों बना सकते हैं, यह केवल 15 आदि

उत्तर

9

आप शायद के लिए zip कहा जाता है देख रहे हैं क्या:

>>> x = ['this', 'is', 'the', 'first', 'list'] 
>>> y = [1, 2, 3, 4, 5] 
>>> z = [0.01, 0.2, 0.3, 0.04, 0.05] 
>>> zip(x,y,z) 
[('this', 1, 0.01), ('is', 2, 0.20000000000000001), ('the', 3, 0.29999999999999999), ('first', 4, 0.040000000000000001), ('list', 5, 0.050000000000000003)] 
>>> for (a,b,c) in zip(x,y,z): 
...  print a, b, c 
... 
this 1 0.01 
is 2 0.2 
the 3 0.3 
first 4 0.04 
list 5 0.05 
+1

भी उल्लेख किया जाना: itertools.izip, उस के लिए एक जनरेटर बनाता है परिणाम। –

+0

धन्यवाद! एक जादू की तरह काम करता है! अच्छी तरह से और सब कुछ प्रारूप। –

3

उपयोग zip

for items in zip(L1, L2, L3): 
    print items 

items प्रत्येक में मूल्यों, बना सकते हैं एक मूल्य के साथ एक टपल हो जाएगा क्रम में, प्रत्येक सूची से।

0
lists = (['this', 'is', 'the', 'first', 'list'], 
      [1, 2, 3, 4, 5], 
      [0.01, 0.2, 0.3, 0.04, 0.05]) 
print zip(*lists) 

एक साथ सूचियों ज़िप और बंद हो जाता है जब कम से कम सूची आइटम से बाहर चलाता है।

0

यह सबसे तुरंत स्पष्ट तरीका है (एक अजगर newb करने के लिए) है, और वहाँ की संभावना एक बेहतर तरीका है, लेकिन यहाँ जाता है:

#Your list of lists. 
uberlist = (list1, list2, list3) 

#No sense in duplicating this definition multiple times. 
#Define it up front. 
uberRange = range(len(uberList)); 

#Since each will be the same length, you can use one range. 
for i in range(len(list1)): 
    # Iterate through the sub lists. 
    for j in uberRange: 
     #Output 
     print uberlist[ j ][ i ]; 
+0

हालांकि आपका समाधान काम करता है, ज़िप अधिक पायथनिक (और छोटा) है। –

+0

हाँ, मुझे आश्चर्य नहीं है कि एक बेहतर तरीका है। मैं केवल कुछ हफ्तों (यदि वह) के लिए पाइथन देख रहा हूं, इसलिए मुझे यकीन है कि मेरे अधिकांश प्रयास अभी भी "लंबा रास्ता" होंगे। – cwallenpoole

+0

मैं यह भी दांव दूंगा कि ज़िप तेज है: मेरा उत्तर पायथन में लिखा गया था, ज़िप एक बिल्ड-इन विधि है। – cwallenpoole

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

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