[코딩도장] day5. 시퀀스 자료형(2) - len(), 인덱스, del
■ 들어가기
- 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그
▶ Unit11. 시퀀스 자료형 활용하기
- 11.2 시퀀스 객체의 요소 개수 구하기
- 11.3 인덱스 사용하기
1. 시퀀스 요소 길이(갯수) 구하기
- 사용법: len(시퀀스객체)
>>> a = list(range(0,10,2)) >>> print(a) [0, 2, 4, 6, 8] >>> len(a) 5 >>> b = tuple(range(0,100,10)) >>> b (0, 10, 20, 30, 40, 50, 60, 70, 80, 90) >>> len(b) 10 |
2. range의 숫자 생성 갯수 구하기
>>> list(range(0,10,2)) [0, 2, 4, 6, 8] >>> len(range(0,10,2)) 5 |
3. 문자열의 길이 구하기
- 문자열의 길이는 공백포함
- 영문뿐만 아니라 한글 문자열 길이도 len()으로 가능
>>> hello = "Hello, World!" >>> hello 'Hello, World!' >>> len(hello) 13 >>> hello = "안녕하세요" >>> len(hello) 5 |
- UTF-8 문자열의 바이트 수 구하기
>>> print(hello) 안녕하세요 >>> len(hello.encode('utf-8')) 15 |
4. 인덱스 사용하기
- 시퀀스 객체의 각 요소에는 순서가 정해져 있으며, 이 순서를 "인덱스"라고 부름
- 시퀀스 객체에 [](대괄호)를 붙이고 [] 안에 각 요소의 인덱스를 지정하면 해당 요소에 접근 가능
- 사용법: 시퀀스객체[인덱스]
주의) 시퀀스 객체의 인덱스는 항상 0부터 시작
>>> a = [38,21,53,62,19] >>> a[0] # 리스트의 첫 번째(인덱스 0) 요소 출력 38 >>> a[2] # 리스트의 세 번째(인덱스 2) 요소 출력 53 >>> a[4] # 리스트의 다섯 번째(인덱스 4) 요소 출력 19 |
- 튜플, range, 문자열도 []에 인덱스를 지정하면 해당 요소를 가져올 수 있음
>>> b = (38,21,53,62,19) >>> b[0] 38 >>> b[0] # 튜플의 첫 번째(인덱스 0) 요소 출력 38 >>> r = range(0,10,2) >>> r[2] # range의 세 번째(인덱스 2) 요소 출력 4 >>> hello = "Hello, World!" >>> hello[7] # 문자열의 여덟 번째(인덱스 7) 요소 출력 'W' |
- 시퀀스 객체에 인덱스 지정하지 않는 경우, 해당 객체 전체를 의미함 (c언어에서 배열의 주소를 의미하는 것과 동일)
>>> a = [38,21,53,62,19] >>> a # 시퀀스 객체에 인덱스 지정하지 않으면 시퀀스 객체 전체를 뜻함 [38, 21, 53, 62, 19] |
5. 음수 인덱스 지정하기
- 인덱스를 음수로 지정하면 뒤에서부터 요소에 접근
- 리스트, 튜플, range, 문자열 모두 동일!
예) -1 : 뒤에서 첫 번째 요소, -5, 뒤에서 다섯 번째 요소
>>> a = [38,21,53,62,19] >>> a[-1] # 리스트의 뒤에서 첫 번째(인덱스 -1) 요소 출력 19 >>> a[-5] # 리스트의 뒤에서 다섯 번째(인덱스 -5) 요소 출력 38 |
6. 인덱스 범위를 벗어난다면?
- IndexError 발생!!
- 리스트, 튜플, range, 문자열 모두 동일!
>>> a = [38,21,53,62,19] >>> a[10] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range |
7. 마지막 요소에 접근하기
- 마지막요소: 리스트의 길이-1
>>> a = [38,21,53,62,19] >>> len(a) # 리스트 a의 길이(갯수) 5 >>> a[len(a)-1] # 리스트 인덱스는 0부터 시작해서 갯수-1까지 인덱스를 가짐 19 |
8. 요소에 값 할당하기
- 사용법: 시퀀스객체[인덱스] = 값
- 단, 튜플은 요소 변경 불가하므로 위와 같이 사용 시 에러 발생함.
- range, 문자열도 요소 변경 불가!
>>> a = [0,0,0,0,0] # 0이 5개 들어있는 리스트 >>> a[0] = 38 >>> a[1] = 21 >>> a[2] = 53 >>> a[3] = 62 >>> a[4] = 19 >>> a [38, 21, 53, 62, 19] >>> a[0] 38 |
9. 요소 삭제하기
- 사용법: del 시퀀스객체[인덱스]
- 단, 튜플은 요소 변경 불가하므로 위와 같이 사용 시 에러 발생함.
- range, 문자열도 요소 변경 불가!
>>> a = [38,21,53,62,19] >>> del a[2] # 리스트의 세 번째(인덱스 2) 요소 삭제 >>> a [38, 21, 62, 19] |
● 요약 ●
1. 요소 변경은 "리스트"만 가능
2. 시퀀스 자료형 중 튜플, range, 문자열은 read only임.