반응형
파이썬에서 리스트와 문자열은 굉장히 비슷하다.
리스트가 어떤 자료형들의 나열이라면, 문자열은 문자들의 나열이라고 할 수 있다.
리스트와 문자열이 어떻게 같고 다른지 알아보자.
인덱싱(Indexing)
두 자료형은 공통적으로 인덱싱(indexing)이 가능하다.
- 알파벳 리스트의 인덱싱
alphabets_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print(alphabets_list[0])
>>> A
print(alphabets_list[1])
>>> B
print(alphabets_list[4])
>>> E
print(alphabets_list[-1])
>>> J
- 알파벳 문자열의 인덱싱
alphabets_string = 'ABCDEFGJ'
print(alphabets_string[0])
>>> A
print(alphabets_string[1])
>>> B
print(alphabets_string[4])
>>> E
print(alphabets_string[-1])
>>> J
for 반복문
두 자료형은 공통적으로 인덱싱이 가능하다. 따라서 for 반복문에도 활용할 수 있다.
- 알파벳 리스트의 반복문(열로 각각 출력)
alphabets_list = ['C', 'O', 'D', 'E', 'I', 'T']
for alphabets in alphabets_list:
print(alphabets)
>>>
C
O
D
E
I
T
- 알파벳 문자열의 반복문(열로 각각 출력)
alphabets_string = 'CODEIT'
for alphabets in alphabets_string:
print(alphabets)
>>>
C
O
D
E
I
T
슬라이싱(Slicing)
두 자료형은 공통적으로 슬라이싱이 가능하다.
- 알파벳 리스트의 슬라이싱
alphabets_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print(alphabets_list[0:5])
>>> ['A', 'B', 'C', 'D', 'E']
print(alphabets_list[4:])
>>> ['E', 'F', 'G', 'H', 'I', 'J']
print(alphabets_list[:4])
>>> ['A', 'B', 'C', 'D']
- 알파벳 문자열의 슬라이싱
alphabets_string = 'ABCDEFGJ'
print(alphabets_string[0:5])
>>> ABCDE
print(alphabets_string[4:])
>>> EFGJ
print(alphabets_string[:4])
>>> ABCD
덧셈 연산
두 자료형에서 모두 덧셈은 '연결'하는 연산이다.
- 리스트 덧셈 연산
list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]
list3 = list1 + list2
print(list3)
>>> [1, 2, 3, 4, 5, 6, 7, 8]
- 문자열 덧셈 연산
list1 = '1234'
list2 = '5678'
list3 = list1 + list2
print(list3)
>>> 12345678
len 함수
두 자료형은 모두 길이를 재는 len 함수를 사용할 수 있다.
- 리스트의 길이 재기
print(len(['H', 'E', 'L', 'L', 'O']))
>>> 5
- 문자열의 길이 재기(공백 포함)
print(len('Hello, world!'))
>>> 13
Mutable(수정 가능한)과 Immutable(수정 불가능한)
리스트와 문자열의 가장 큰 차이점이 있다.
리스트는 데이터를 바꿀 수 있지만, 문자열은 데이터를 바꿀 수 없다는 점이다.
리스트와 같이 수정 가능한 자료형을 'mutable'한 자료형이라 부르고, 문자열과 같이 수정 불가능한 자료형을 'immutable'한 자료형이라 한다.
숫자, 불린(boolean), 문자열은 모두 'immutable'한 자료형이다.
- 리스트 데이터 바꾸기
[1, 3, 5, 7, 9]의 리스트가 있다.
리스트 numbers의 인덱스 0에 5를 새롭게 지정하게 될 경우, [5, 3, 5, 7, 9]가 출력이 될 것이다.
이처럼 리스트는 데이터의 생성, 삭제, 수정이 가능하다.
예제 1) 수정
numbers = [1, 2, 3, 4]
numbers[0] = 5
print(numbers)
>>> [5, 2, 3, 4]
예제 2) 삭제
numbers = [1, 2, 3, 4]
numbers.remove(2)
print(numbers)
>>> [1, 3, 4]
예제 3) 생성(append)
numbers = [1, 2, 3, 4]
numbers.append(5)
print(numbers)
>>> [1, 2, 3, 4, 5]
예제 4) 삽입(insert)
numbers = [1, 2, 3, 4]
numbers.insert(2, 9)
print(numbers)
>>> [1, 2, 9, 3, 4]
- 문자열 데이터 바꾸기
문자열 name의 인덱스 0에 'C'를 새롭게 지정해주었더니 오류가 발생하였다.
TypeError: 'str' object does not support item assignment은 변형이 불가능하다는 메시지이다.
이처럼 문자열은 리스트와 달리 데이터의 생성, 수정이 불가능하다.
name = 'HOEHOU'
name[0] = 'C'
print(name)
>>> TypeError: 'str' object does not support item assignment
반응형
'코딩배우기' 카테고리의 다른 글
Dictionary(feat. key-value) (0) | 2021.01.22 |
---|---|
리스트(list) (0) | 2021.01.22 |
8일차)프로그래밍 핵심 개념 in Python(return, optional parameter) (0) | 2020.09.05 |
7일차)프로그래밍 핵심 개념 in Python(boolean, type) (0) | 2020.08.31 |
객체 지향 프로그래밍 개념 (0) | 2020.08.28 |