2010-04-12 7 views
23

यदि आपके पास पाइथन में एक सूची है, और सूचकांक पर तत्व निकालना चाहते हैं तो एक नई सूची में 1, 2 और 5 कहें, आप कैसे करते हैं?पायथन में इंडेक्स का उपयोग करके सूची से तत्व निकालने के लिए कैसे?

इस तरह मैंने किया है, लेकिन मैं बहुत संतुष्ट

>>> a 
[10, 11, 12, 13, 14, 15] 
>>> [x[1] for x in enumerate(a) if x[0] in [1,2,5]] 
[11, 12, 15] 

किसी भी बेहतर तरीके से नहीं कर रहा हूँ?

सामान्य रूप से अधिक, इंडेक्स के साथ एक ट्यूपल दिया गया, इस सूची का उपयोग सूची से संबंधित तत्वों को निकालने के लिए कैसे करें, अंततः डुप्लिकेशन के साथ (उदाहरण के लिए टुपल (1,1,2,1,5) उत्पादन [11,11 , 12,11,15])

+0

क्या कोई गारंटी है कि टुपल में केवल वैध अनुक्रमणिका होती है? –

+1

इस प्रश्न को https://stackoverflow.com/questions/18272160/access-multiple-elements-of-list-nownow-their-index – jdhao

उत्तर

52

शायद का उपयोग करें:

[a[i] for i in (1,2,5)] 
# [11, 12, 15] 
+0

btw में भी पूछा गया है यह भी बहुत तेज़ है। आकार एन की सूची से के आइटम लाने से ओ ओ के समाधान में जटिलता ओ (के) और ओ (एन * के) की है। – yairchu

+1

ठीक है ... धन्यवाद। यह बहुत छोटा था, और यह स्पष्ट है कि मैं बहुत थक गया हूँ। –

+1

कोई समस्या नहीं है। किसी भी दिन मैं एक स्टीफानो बोरिनी प्रश्न का उत्तर दे सकता हूं (दुर्लभ, लेकिन) अच्छा दिन :) – unutbu

5

numbers = range(10, 16) 
indices = (1, 1, 2, 1, 5) 

result = [numbers[i] for i in indices] 
2

सीमा जाँच का प्रयास करें:

[a[index] for index in (1,2,5,20) if 0 <= index < len(a)] 
# [11, 12, 15] 
4

मुझे लगता है कि आप इस के लिए देख रहे:

elements = [10, 11, 12, 13, 14, 15] 
indices = (1,1,2,1,5) 

result_list = [elements[i] for i in indices]  
3

उपयोग Numpy प्रत्यक्ष सरणी अनुक्रमण, MATLAB, जूलिया, के रूप में ...

a = [10, 11, 12, 13, 14, 15]; 
s = [1, 2, 5] ; 

import numpy as np 
list(np.array(a)[s]) 
# [11, 12, 15] 

अभी तक बेहतर, बस NumPy सरणी के साथ रहना

a = np.array([10, 11, 12, 13, 14, 15]) 
a[s] 
#array([11, 12, 15]) 
संबंधित मुद्दे