2017-04-18 1 views
3

다른 사람이 나에게이 구문을 설명 할 수 있습니까? 나는 워드 프로세서/블로그를 검색했지만 어레이 슬라이스의 인덱스로 부울을 사용하는 것에 대해서는 언급 할 수 없습니다.배열을 부울을 인덱스로 사용하여 자르기

is_negative = num_as_string[0] == '-' 
num_as_string[is_negative:] 

내 생각은 거짓 확실히 사람이 알고 있나요 0과 1로 캐스팅되고 True로 주조되고 또는 나에게 어떤 문서를 가리킬 수 있다는 것입니다 : 나는 convert_base.py이 스크립트에서이 구문을 찾았나요?

>>> a = [1,2,3] 
>>> a[True:] 
[2,3] 
>>> a[False:] 
[1,2,3] 
>>> a[:False] 
[] 
>>> a[:True] 
[1] 
>>> a[False:True] 
[1] 
>>> a[True:True] 
[] 
>>> a[False:False] 
[] 
>>> a[True:False] 
[] 
>>> a[False::True+1] 
[1,3] 
+0

파이썬에서 "캐스팅"과 관련하여 생각하지 않는 것이 가장 좋습니다. 이 용어는 대충 느슨하게 던져 지지만 모든 것이 대상이되는 Python과 같은 매우 역동적 인 언어에서는 의미가 없습니다. –

답변

3

외에 TrueFalse 파이썬 슬라이스기구 리턴으로 사용 용이 각각 1과 0으로 강제되는 INT 서브 그들의 __index__ 방법이라는 사실로부터 정수 값 False 갖는다 10 :

>>> class Decade(object): 
... def __index__(self): 
...  return 10 
... 
>>> range(20)[Decade():] # list(range(...))[Decade():] for Python 3 
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 
:

>>> True.__index__() 
1 
>>> False.__index__() 
0 

넌 일반적 __index__ 방법을 정의하는 임의의 개체를 슬라이스 할

+0

매일 새로운 것을 배웁니다. True + True = 2 – Tristen

+0

고마워요! 이 설명이 도움이됩니다. –

2

TrueFalsebool, int의 서브 클래스의 인스턴스입니다. True는 정수 값 1을 갖고, 0

관련 문제