2017-10-10 2 views
-1

이 질문에 대한 답변은 에 이미 나와 있습니다.이 진술은 어떻게 파이썬에서 유효합니까?파이썬 :리스트와 함께 어떻게 작동합니까? '스팸'[1 : 3] 어떻게 작동합니까?

>>> 'spam'[1:3] 
>>> 'pa' 

질문은 어떻게 슬라이스가 str 유형과 관련되는지입니다. 그것은 '스팸'과의 평범한 결합인가?

감사 --Div

+0

이것은 문자열이 아니며 목록입니다. 조각 표기법이있는 문자열로, 색인 '1'에서 시작하여 색인 '3'에서 끝나는 문자열 ''spam ''을 가져옵니다. –

답변

1

str 유형을 슬라이스 할 수있는 이유는 __getslice__ 방법 (파이썬 2)과 __getitem__ 방법 (파이썬 2와 3 모두)이 있기 때문입니다.

dir('spam')에는 이러한 방법이 표시됩니다.

또한, 당신은 자세한 내용은 https://docs.python.org/2/reference/datamodel.html#object.getslice을 참조 할 수 있습니다 파이썬 3

에 파이썬 2 'spam'.__getslice__(1,3) 또는 'spam'.__getitem__(slice(1,3))을 시도해보십시오.

+0

완벽한 정보 주셔서 감사합니다. – user3069970

2

슬라이스 객체의 복사본이 조각 작품은 첫 번째 문자의 왼쪽 가장자리와 문자 사이 가리키는으로 인덱스 생각하는 것이 얼마나 기억

방법 중 하나를 생성 이어서 0 번째 N 개의 문자열의 마지막 문자의 우측 에지는 예를 들면 인덱스 n을 갖는다 :

+---+---+---+---+---+---+ 
| P | y | t | h | o | n | 
+---+---+---+---+---+---+ 
0 1 2 3 4 5 6 
-6 -5 -4 -3 -2 -1 

번호의 첫 번째 행 인덱스 0 ... 문자열 (6)의 위치를 ​​제공하는 단계; 두 번째 행은 해당하는 음수 인덱스를 제공합니다. i에서 j까지의 슬라이스는 각각 i와 j로 표시된 가장자리 사이의 모든 문자로 구성됩니다. 이 도움이된다면 일반 배열과 같은 문자열 귀하의 경우에는

+---+---+---+---+ 
| s | p | a | m | 
+---+---+---+---+ 
0 1 2 3 4 
-4 -3 -2 -1 

>>> 'spam'[1:3] 
'pa' 
1

생각합니다. 예를 들어

0 1 2 3 
s p a m 

그렇게 spam[1:3] 당신은 단순히 (스스로 길이가 1 인 문자열) 문자의 불변의리스트와 같은 문자열을 고려할 수 pa

0

즉, 문자열의 위치 [1, 3)의 내용을 제공합니다 :

>>> list('spam') 
['s', 'p', 'a', 'm'] 
>>> sorted('spam') 
['a', 'm', 'p', 's'] 
>>> [c * 2 for c in 'spam'] 
['ss', 'pp', 'aa', 'mm'] 

그것은 그 할당이 작동하지 않습니다 의미하지만, 슬라이스는 목록처럼 동일합니다

,
>>> 'spam'[1:3] 
'pa' 
>>> list('spam')[1:3] 
['p', 'a'] 
관련 문제