2012-11-02 22 views
6

संभव डुप्लिकेट:
First items in inner list efficiently as possibleअजगर में सूचियों की एक सूची के भीतर सूची से n वें तत्व प्राप्त

चलें कहते हैं कि मैं है:

a = [ [1,2], [2,9], [3,7] ] 

मैं चाहता हूँ प्रत्येक आंतरिक सूचियों के पहले तत्व को पुनर्प्राप्त करने के लिए:

b = [1,2,3] 

इस (मेरे वर्तमान हैक) क्या करने वाले के बिना:

for inner in a: 
    b.append(inner[0]) 

मैं इसके लिए एक एक लाइनर है यकीन है, लेकिन मैं वास्तव में नहीं जानता कि मैं क्या देख रहा हूँ।

उत्तर

24

बस अपनी सूची कंप्यूटर अनुप्रयोग बदल होने के लिए:

b = [el[0] for el in a] 

या:

from operator import itemgetter 
b = map(itemgetter(0), a) 

या, यदि आप "उचित सरणियों" साथ काम कर रहे:

import numpy as np 
a = [ [1,2], [2,9], [3,7] ] 
na = np.array(a) 
print na[:,0] 
# array([1, 2, 3]) 

और zip :

print zip(*a)[0] 
+0

मुझे लगता है कि इसे प्राप्त करने के लिए कोई अन्य वैकल्पिक शेष नहीं है। :) –

+0

@ अश्विनी चौधरी मैं इस बारे में संघर्ष कर रहा हूं कि मैं और क्या सोच सकता हूं ... थोड़ा सा;) - क्या आप 'नक्शा मानते हैं (अगला, नक्शा (इटर, ए))' इसे दबा रहा है? –

+0

यह अच्छा है, लेकिन दूसरों की तुलना में धीमा है। –

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