2012-10-26 2 views
8

반복 슬라이스가 잘 튜플과리스트에 작동합니다 문자열 조각화 반복적

>>> tuple = ("nav", "yad") 
>>> tuple[0] 
'nav' 
>>> tuple[0][0] 
'n' 

그러나 문자열

: 나는 문자열 이름 변수를 통해 슬라이스를 반복하려고

>>> name="university" 
>>> name[0] 
'u' 

여기 이상한 것은, , name[0][0] 또는 name[0][-1]에는 아무 것도 없으므로 왜 "u"이 표시됩니까?

>>> name[0][0] 
'u' 
>>> name[0][-1] 
'u' 

그리고 뭔가 다음 name[0][0]에있는 경우 왜 다른 인덱스에?

>>> name[0][1] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: string index out of range 
+0

반복되는 조각화는 목록의 기능이 아닙니다. '[1,2,3] [0] [0]'을 시도해보십시오. –

+0

색인을 생성 할 때 (실제로 모은 예제에서 조각을 뽑지 않은) 문자열은 문자열을 얻습니다. 문자는 파이썬에서 길이가 1 인 문자열입니다. 유형이 변경되지 않습니다. 튜플 /리스트의 경우는 아닙니다. – gorlum0

답변

12

문자열은 시퀀스입니다. 한 문자의 문자열은 여전히 ​​하나의 요소가있는 시퀀스입니다. 따라서 문자열을 사용하면 name[0][0][0][0]...을 수행 할 수 있으며 정상적으로 작동합니다. 시퀀스의 마지막 요소를 반환 인덱스 -1와 같은 : 문자열 name[0]에 하나의 요소가 있기 때문에

>>> name[0][0] 
'u' 
>>> name[0][0][-1] 
'u' 
>>> name[0][0][-1][-1] 
'u' 

name[0][1] 분명히 실패합니다.

0

@ Roman의 답변에 추가하십시오. 나는 name[0]이 일종의 char을 반환 할 것이라는 인상하에 있다고 생각합니다. 그러나 그렇지 않습니다. 결과는 name[0]은 길이가 1 인 문자열을 반환합니다. 그래서 빈번하지 않은 문자열을 0으로 반복해서 색인하는 횟수가 아무리 많아도 항상 똑같은 값을 반환합니다.