2012-08-16 3 views
1

는 파이썬의 슬라이스 속기 슬라이스 객체의 튜플을 자동 - 생성파이썬의 표기법을 대괄호 밖에서 사용할 수 있습니까? 괄호 안에

class Foo(object): 
    def __getitem__(self, key): 
     print key 

Foo()[1::, 2:20:5] 

(slice(1, None, None), slice(2, 20, 5))를 인쇄합니다. 그러나 내가 알 수있는 한,이 속기는 괄호 밖에서 작동하지 않습니다.

다른 컨텍스트에서 슬라이스 속기를 사용하는 방법이 있습니까? __getitem__에 전달 된 것을 무엇이든 반환하는 더미 객체를 정의 할 수 있습니다. 이는 적어도 약식 구문을 사용하여 슬라이스 튜플을 생성하는 방법을 제공합니다. 더 평범한 방법이 있습니까?

답변

2

NumPy와 당신을 위해이 작업을 수행 할 것 s_ 개체가 있습니다.

2

실제로 인쇄 된 것이 좋은 단서입니다. slice() 전역 함수를 통해 슬라이스 객체를 직접 만들 수 있습니다. 그런 다음 목록에서 색인을 생성하는 데 사용됩니다.

s = slice(1, 10, 2) 
numbers = list(range(20)) 
print numbers[s] 
print numbers[1:10:2] 

이렇게하면 동일한 결과가 [1, 3, 5, 7, 9] 두 번 인쇄됩니다.

슬라이스 인스턴스에는 몇 가지 특성과 메서드가 있습니다. 당신은 더 많은 것을보기 위해 도움 (조각)을 볼 수 있습니다.

>>> np.s_[2::2] 
slice(2, None, 2) 

쉽게 단순히 s_ = Foo()를 설정하고 쉽게 조각을 만들 때마다 s_를 사용하여이 자신 만의 버전을 만들 수 있습니다

+1

OP는 브래킷 단축형을 사용하여 슬라이스 객체를 생성하는 방법을 원합니다. –

관련 문제