(1) Aliasing
파이썬에서 어떤 값을 변수에 저장하면 그 값에 이름표를 주는거라고 생각 가능합니다.
코드들을 통해서 예시를 살펴봅시다!
ex)
x = 2
y = x
y = 6
print(x)
print(y)
를 하면 x = 2, y = 6이라는 결과가 나오게됩니다.
정수 2가 변수 x에 지정이되고 정수 2가 y에 지정이 되며 변수y에 지정된 값을 6으로 바꿔줍니다.
ex)
x = [4, 6, 8, 10, 12]
y = x
y[3] = 16
print(x)
print(y)
리스트가 x에 지정이 되고 똑같은 리스트가 더불어 y에 지정이 되었습니다. 거기에서 y의 3번째 인덱스 값에 16을 대입하게되면
[4,6,8,10,12] 와 [4,6,8,16,12] 가 출력될거같나요?
둘다 [4,6,8,16,12] 가 출력되게 됩니다.
[4,6,8,10,12] 라는 리스트에 X라는 태그를 달고 추가로 Y라는 태그를 달았다고 생각해보죠. 그리고 나서 리스트에다가 Y[3] = 16을 해줘도 리스트는 Y의 태그가 달렸으면서 동시에 X의 태그도 달려있는 상태이기에 print를 해주면 똑같은 결과가 출력되는 것입니다.
이때 y를 alias(가명) 이라고 합니다.
ex)
x = [4, 6, 8, 10, 12]
y = list(x)
y[3] = 16
print(x)
print(y)
이렇게 해야 [4,6,8,10,12] 와 [4,6,8,16,12]가 출력이 됩니다. y = list(x)는 x리스트와 똑같이 복사한 리스트에 y라는 태그를 붙여준거고 거기에 y[3] = 16으로 할당해주면 16이 할당되지 않은 리스트와 할당된 리스트 2가지로 나뉘게 됩니다.
(2) 리스트와 문자열
리스트와 문자열은 같은 동작을 수행합니다. 문자열이 리스트처럼도 쓰일 수 있습니다.
한가지 차이점이 있다면 리스트는 원소의 추가나 삭제 등 수정이 가능하지만 문자열은 불가능하다는 점 입니다.
ex)
alphabets_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print(alphabets_list[0])
print(alphabets_list[1])
print(alphabets_list[2])
print(alphabets_list[-1])
alphabets_string = 'ABCDEFGHIJ'
print(alphabets_string[0])
print(alphabets_string[1])
print(alphabets_string[2])
print(alphabets_string[-1])
를 하면 ABCJ 가 반복해서 출력됩니다.
'' 안에 있는 문자열 알파벳들 하나하나가 리스트 안에 원소들이 된다는 뜻입니다.
슬라이싱에 대해서도 살펴봅시다.
ex)
alphabets_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print(alphabets_list[3:5])
print(alphabets_list[6:])
print(alphabets_list[:4])
alphabets_string = 'ABCDEFGHIJ'
print(alphabets_string[3:5])
print(alphabets_string[6:])
print(alphabets_string[:4])
['D', 'E']
['G', 'H', 'I', 'J']
['A', 'B', 'C', 'D']
DE
GHIJ
ABCD
와 같은 결과들이 출력 됩니다. 슬라이싱도 문자열과 리스트가 서로 같은 방식으로 작동합니다.
리스트와 문자열의 덧셈 연산에 대한 내용도 담겨있습니다.
ex)
list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]
list3 = list1 + list2
print(list3)
string1 = '1234'
string2 = '5678'
string3 = string1 + string2
print(string3)
[1, 2, 3, 4, 5, 6, 7, 8]
12345678
이라는 결과가 출력됩니다.
리스트끼리, 문자열끼리 서로 더하여 합칠 수 있다는 뜻입니다.
len함수를 문자열과 리스트에 적용한 결과입니다.
print(len(['H', 'E', 'L', 'L', 'O','W', 'O', 'R', 'L', 'D', '!']))
print(len("Hello, world!"))
을 하면 11 과 13이 출력됩니다.
, 와 ! 그리고 띄어쓰기도 길이에 포함합니다.
서두에 말씀드린 리스트와 문자열의 가장 큰 차이점에 대해서 살펴보려는데요, 리스트는 데이터를 바꿀 수 있지만, 문자열은 데이터를 바꿀 수 없다는 것입니다.
리스트와 같이 수정 가능한 자료형을 'mutable'한 자료형이라고 부르고, 문자열과 같이 수정 불가능한 자료형을 'immutable'한 자료형이라고 부릅니다. 숫자, 불린, 문자열은 모두 immutable한 자료형입니다.
ex)
name = "python"
name[0] = "k"
print(name)
이렇게 하면 오류가 생긴다는 겁니다. 문지열을 함부로 바꿀 수 없으니까요.