2011-09-08 4 views
4

값을 검색하기 위해 다른 목록의 색인으로 사용해야하는 정수 목록이 있습니다. 우리는 우리가 코드파이썬에서 정수 목록의 특정 위치에 액세스하는 방법은 무엇입니까?

import operator 
    operator.itemgetter(1,2,3)(a) 

그것은 2, 3, 4 항목을 반환합니다 다음 사용하여 특정 요소를 얻을 수 배열을

a = [1,2,3,4,5,6,7,8,9] 

을 다음했다 말할 수 있습니다.

내가 누군가 나를 도와 줘요 수 있다면 나는 궁금 오류

operator.itemgetter(b)(a) 

을 얻는 다음 코드를 실행하려고하면 내가 다른 목록을

b=[1,2,3] 

을 가지고 있지만 말할 수 있습니다. 나는 b를 쉼표로 변환해야한다는 문제가 매우 중요하다고 생각합니다.

덕분에 많은

답변

8

사용 * :

operator.itemgetter(*b)(a) 

함수 호출 수단의 *이 값을 풀고, 그리고 함수의 인수로 요소를 사용합니다.

0

itemgetter의 첫 번째 인수는 튜플이어야합니다. 다음과 같이 할 수 있습니다 :

apply(operator.itemgetter, tuple(b))(a) 

이 작업을보다 깔끔하게/더 자연스럽게하는 방법이 있지만이 방법은 효과가 있습니다. 당신이 NumPy와 태그로 질문을 태그 한 이후

3

, 당신은 또한이 작품 있도록 배열을 고려할 수 :

from numpy import array 
a = array([1,2,3,4,5,6,7,8,9]) 
b = [1,2,3] 
a[b] 
+0

array (operator.itemgetter (* b) (a))는 읽기 쉽지 않지만 배열을 출력해야하는 경우 array (a) [b]보다 빠릅니다. 출력이 배열이어야하며 읽기 쉽도록 신경 쓰지 않는다면 Ned의 솔루션으로 계속 진행하십시오. – Daan

0

또한 시도 할 수 있습니다 :

map(a.__getitem__, b) 

코드가를 반환 파이썬 2에있는리스트 또는 파이썬 3에있는 반복기. 튜플로 변환해야한다면, tuple()에 넣기 만하면된다.

관련 문제