hojeomi blog

Day 2. 파이썬 기초 문법 본문

AI/Course

Day 2. 파이썬 기초 문법

호저미 2021. 1. 19. 21:59
Day 2

1. 용량 단위

  • 1bit * 8 = 1byte
  • 1byte * 1024 = 1MB
  • 1MB * 1024 = 1GB 정수형(int): 32bit = 4byte 사용

2. 리스트

1)

In [12]:
t = [1,2,3]
a,b,c = t

print(a,b,c)
1 2 3

2) 2칸 단위 출력, 역 슬라이싱

In [14]:
cities = ['서울','부산','경주','울산','대전','강릉']

# 2칸 단위 출력
print(cities[::2])
['서울', '경주', '대전']
In [13]:
# 역 슬라이싱
print(cities[::-1])
['강릉', '대전', '울산', '경주', '부산', '서울']

2. 얕은 복사(shallow copy) vs. 깊은 복사(deep copy)

1) 얕은복사: 값을 복사하는 것이 아니라 메모리 주소를 참조함

In [17]:
a = [1,2,3]
b = a
print(b)

a[0] = 999
print(b) # a의 요소를 바꿨는데 b의 요소 또한 바뀜
[1, 2, 3]
[999, 2, 3]

*🎈 Question. 아래 경우는 왜 b가 a의 변화를 반영하지 않나? → mutable과 immutable의 차이

  • mutable: 객체 생성 후 값이 변할 수 있음
  • immutable: 객체 생성 후 값이 변할 수 없음
In [21]:
a = 10
b = a
print(b)

a = 16
print(b)
10
10

image.png

1-2) 얕은 복사에서 재할당

  • 위와 같이 b = a, b에 a를 할당하면 같은 메모리 주소를 바라보게 되지만, b에 다른 값을 할당하면 재할당이 이루어지며 b의 메모리 주소가 변경됨. 즉, a와 b는 다른 값을 가지게 됨
In [24]:
# 방법 1. copy()

a = [1,2,3]
b = a.copy()
print(b)

a[0] = 999
print(b) # a의 요소를 바꿔도 b의 요소는 바뀌지 않음
[1, 2, 3]
[1, 2, 3]
In [25]:
# 방법 2. a[:]

a = [1,2,3]
b = a[:]
print(b)

a[0] = 999
print(b) # a의 요소를 바꿔도 b의 요소는 바뀌지 않음
[1, 2, 3]
[1, 2, 3]

2) 깊은 복사: 내부 객체들까지 모두 새롭게 만들어짐

In [28]:
# deepcopy()

import copy

a = [1,2,3]
b = copy.deepcopy(a)
print(b)

a[0] = 999
print(b)
[1, 2, 3]
[1, 2, 3]

3. 시퀀스 자료형

  • 파이썬에서 리스트, 튜플, range, 문자열은 시퀀스 자료형임
  • set은 아님
  • 특징: 인덱싱, 슬라이싱(특정 구간의 값을 취할 수 있음), 연결(+ 연산자로 연결 가능), 반복(* 연산자로 반복 가능), 멤버확인(in 키워드 사용), 길이정보(len 함수 사용)

'AI > Course' 카테고리의 다른 글

3-2. Pythonic Code  (0) 2021.01.21
Day 3-1. Python Data Structure  (0) 2021.01.20
Day 1. 파이썬 개요  (0) 2021.01.18
Day 0-2. 윈도우 Terminal - cmder, Windows Terminal  (0) 2021.01.18
Day 0-1. File System & Terminal Basic  (0) 2021.01.18
Comments