2014-06-08 1 views
1

두 개의 목록 a=[10,5,6,8]b=[1,3]이 있습니다. 후자를 전자의 첨자로 어떻게 사용할 수 있습니까? 나는. a의 두 번째와 네 번째 요소를 추출하고 싶습니다.파이썬에서 목록 색인 작성

v = [16 5 9 4 2 11 7 14]; 

v([1 5 6])  % Extract the first, fifth, and sixth elements 
>> ans = 
     16 2 11 

in Matlab I would use은 어떻게 파이썬에서 동일한 기능을 수행 할 수 있고, 그렇지 않으면 넣어?

+1

Matlab에서 오신다면 matlab과 같은 배열 작업에이리스트를 사용 하시겠습니까? – DSM

+1

메모를 추가하려면 파이썬에서 배열 색인이 0부터 시작됩니다. – shahkalpesh

+0

http://stackoverflow.com/questions/18272160/access-multiple-elements-of-list-knowing-their-index를 보시오 –

답변

7

과 같이 설명 할 수있다 그것 :

from operator import itemgetter 

a=[10,5,6,8] 
b=[1,3] 
res = itemgetter(*b)(a) 
# (5, 8) 
6

당신은 그래서 같은 list comprehension를 사용할 수 있습니다

>>> a = [10, 5, 6, 8] 
>>> b = [1, 3] 
>>> [a[x] for x in b] 
[5, 8] 
>>> 
2
l=[1 5 6] 
v = [16 5 9 4 2 11 7 14]; 
[v[i] for i in l] 

이 같은 시도 할 수 있습니다이

당신이 할 operator.itemgetter를 사용할 수있는이

for i in l: 
    print v[i] 
2
a=[10,5,6,8] 
b=[1,3] 

ex = [a[i] for i in b] 
print(ex) # [5, 8] 
3

numpy은 배열 및 다른 배열 및 행렬 작업의 모음을 Matlab 스타일로 지원합니다. 계산 집약적 인 작업을 위해 이것을 사용하십시오 :

In [1]: import numpy as np 

In [2]: a = np.array([10,5,6,8]) 

In [3]: b = np.array([1,3]) 

In [4]: a[b] 
Out[4]: array([5, 8]) 
+0

대답은 도움이되지만 numpy는 표준 모듈의 일부가 아닙니다. 그래서, 그것은 OP가 요구 한 기능을 위해 무언가를 다운로드 할 것입니다. – shahkalpesh

+1

@shahkalpesh 그것은 matlab에서 오는 경우, OP가 원하는 또는 이미 numpy/scipy/pandas 등을 설치했을 것이라고 가정하는 것이 좋습니다 ... –

+0

@JonClements : 나는 그 배경을 가지게됩니다. 목록 이해력이 내장되어 있으므로 곧 이해할 수 있습니다. – shahkalpesh