Coding/Python

[코드잇] 파이썬(python) Aliasing(별명, 가명) - 가변형(mutable), 불변형(immutable), 리스트와 문자열의 공통점 / 차이점

폴밴 2021. 9. 14. 13:36

파이썬 데이터의 비밀

Aliasing

  • 파이썬 자료형의 따라 aliasing이 일어난다.불변형 (immutable) : tuple, str, int, bool, float
  • 가변형 (mutable) : dict, list
  • 변수 이름이 적힌 이름표를 값에 단다고 생각할 수 있다.
x = 5  # 5에 x라는 이름표를 단다.
y = x  # x = 5 이므로 5에 y 이름표를 단다.
y = 3  # 한 이름표는 한 곳에만 달릴 수 있다. 5에 있던 y 이름표가 없어지고 3에 y 이름표가 달린다.
print(x)  # 5
print(y)  # 3
  • 리스트의 경우 가변형이기 때문에 값이 다 바뀐다.
x = [2, 3, 5, 7, 11]
y = x  # 가명 (alias)  # [2, 3, 5, 7, 11]에 y 이름표를 단다.
y[2] = 4  # y = [2, 3, 4, 7, 11] 이때 리스트에 x 이름표도 달려 있으므로 x도 바뀐다.
print(x)  # [2, 3, 4, 7, 11]
print(y)  # [2, 3, 4, 7, 11]

x = [2, 3, 5, 7, 11]
y = x
y = [2, 3]  # 슬라이싱은 새로운 리스트로 이름표 할당
print(x) # [2, 3, 5, 7, 11]  # x는 바뀌지 않는다.
print(y) # [2 ,3]
x = [2, 3, 5, 7, 11]
y = list(x)
y[2] = 4
print(x)
print(y)
  • list(x)를 이용하면 기존의 값을 안바꾸고 복사할 수 있다.
x = [2, 3, 5, 7, 11]
y = list(x) # x 의 값을 복사하여 y에 저장
y[2] = 4  # y 리스트의 값 바꾸기
print(x) # [2, 3, 5, 7, 11]
print(y) # [2, 3, 4, 7, 11]

리스트와 문자열

  • 리스트와 문자열은 비슷한 부분이 많다.len 함수를 사용해 문자의 갯수를 알 수 있다.그러나 문자열은 리스트와 달리 수정할 수 없다.
  • 덧셈 연산이 가능하다. ( 'ab' + 'cd' = "abcd' )
  • 인덱싱을 통해 특정 문자열을 뽑거나, 슬라이싱할 수 있다.
alphabet_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']

print(alphabet_list[0])  # a
print(alphabet_list[:3])  # ['a', 'b', 'c']
print(len(alphabet_list))  # 9

alphabet_string = 'abcdefghi'

print(alphabet_string[0])  # a   # 문자열도 인덱싱을 사용할 수 있다.
print(alphabet_string[:3])  # abc  
print(len(alphabet_string))  # 9   # len 함수를 통해 문자열의 갯수를 알 수 있다.

alphabet_string[0] = q  #error  # 문자열은 리스트와 달리 수정이 불가능하다.
  • 인덱싱이 가능하기 때문에 for 반복문도 사용할 수 있다.
alphabet_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']

for i in alphabet_list:
    print(i)

alphabet_string = 'abcdefghi'

for k in alphabet_string:
    print(k)