IT/파이썬

[코딩도장] day5. 시퀀스 자료형(2) - len(), 인덱스, del

_하늘여우_ 2020. 8. 8. 00:17

■ 들어가기

- 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그


▶ 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임.