2016-08-22 2 views
2

여기 학생들을 가르치면서 발견 한 파이썬 기이 한 일입니다.부정적인 인덱스를 사용하여 파이썬에서 전체 문자열에 액세스하기

음수 색인 생성이 올바르게 작동해야한다면 m = 'string'문자열에 대해 다음 단계를 수행했습니다.

>>> m='string' 
>>> m[:-1] 
'strin' 
>>> m[:0] 
'' 
>>> m[-1] 
'g' 
>>> m[0:] 
'string' 
>>> m[:-1] 
'strin' 
>>> m[:0] 
'' 
>>> 

음수 인덱스를 사용하여 전체 문자열에 액세스하는 방법을 알고 싶습니까?

+3

수 없습니다. 'm [-0 :]'또는'm [-len (m) :]'이 아닌 한. –

+3

하지만 왜? 이것은 부정적인 지표가 만들어진 곳이 아닙니다. – DeepSpace

+0

'm [:: - 1]'은 항상 재미있는 데모입니다. "리스트에 왜 reverse() 메소드가 있지만 문자열은 아닌가?리스트에서이 슬라이스와'reverse()'의 차이점은 무엇인가요? – cdarke

답변

7
>>> m='string' 
>>> m[-len(m):] 
'string' 

양수 인덱스가 문자열의 시작 부분부터 계산되므로 음수 인덱스는 마지막부터 계산됩니다. 따라서 len(m)으로 다시 계산하여 m의 시작 부분으로 돌아 가야합니다.

+0

'n = m [-len (m) :]'그렇다면 :'n is m'. – cdarke

0

나는 다른 사람이 제안한 답변과 같은 의미는 아니라고 생각합니다. 0이 때문에 -0 N 않는 마지막 N, 을 제외하고 미터m[:-N] 반환 모든 문자가 0이며, m[:0]은 물론, 빈 문자열을 반환해야하는 이유 당신이 알고 싶은 것은.

불행히도, 이것은 극복 할 수없는 언어의 특징입니다.

경찰관은 다음을 제공합니다 : m[:None] 또는 m[:(None if N==0 else -N)].

관련 문제