본문 바로가기
Python/네이버 부스트코스 AI BASIC 코칭스터디

[ AI 코칭스터디 ] 1주차 학습 ( Variables )

by 2CHAE._.EUN 2022. 1. 17.

[ Variables ]

 

Variables

 

프로그래밍에서 변수는 값을 저장하는 장소로 변수는 메모리 주소를 가지고 있고 변수에 들어가는 값은

메모리 주소에 할당됨

 

변수는 선언되는 순간 메모리 특정 영역의 물리적인 공간에 할당됨.

 

변수에는 값이 할당되고 해당 값은 메모리에 저장된다. 

 

[ 컴퓨터 구조 - 폰 노이만 아키텍쳐 ]

사용자가 컴퓨터에 값을 입력하거나 프로그램을 실행할 경우 정보를 먼저 메모리에 저장시키고
CPU가 순차적으로 그 정보를 해석하고 계산하여 사용자에게 결과값을 전달하는 구조

* CPU = 제어장치 + 산술논리장치

 

데이터 타입에 따라 메모리를 차지하는 공간의 크기가 달라진다 .

 * Dynamic Typing : 코드 실행 시점에 데이터의 Type을 결정하는 방법

 

 

형변환

 

a = 10
type(a) # ▶ <class 'int'>

float(a) # ▶ 10.0

# float(a)를 했을 때 형변환된 a의 값을 리턴해주는 것 뿐이지
# 데이터 타입이 바뀐 것은 아니다.

a = float(a) # a의 데이터 타입을 변경하려면 변수에 할당해야함

 

 

문자열 + 숫자

 

문자열과 숫자를 덧셈하면 에러가 난다. 문자열은 문자열끼리만 더해야함

 

a = "76.3"
b = float(a)
c = 10

b + c # ▶ 86.3

a + a # ▶ "76.376.3"

 

[ 컴퓨터가 이진수를 쓰는 이유 ]

컴퓨터는 실리콘이라는 재료로 만든 반도체로 구성이 되어있음
반도체는 특정 자극을 줬을 때 전기가 통할 수 있게 해주는 물질이다.

도체와 부도체에 반해서 반도체는 전류 흐름의 제어가 가능하기 때문에
전류가 흐를때 1, 흐르지 않을 때 0 으로 해서 숫자로 표현이 가능하다.

이진수 한자리의 크기는 8bit = 1byte이다.

 

 

리스트

 

append( 원소 ) 리스트에 원소 추가
extend( [리스트] ) 리스트에 새로운 리스트 추가
insert( index, 원소 ) index 주소에 원소 추가
remove( 원소 ) 리스트에서 원소에 해당하는 첫번째 값 삭제
del 리스트[index] index 주소 리스트 객체 삭제

 

파이썬은 다양한 데이터 타입의 값들이 하나의 리스트 객체안에 다 들어갈 수 있다.

리스트 안에 리스트도 입력이 가능하다.

 

 

파이썬은 해당 리스트 변수에는 리스트 주소값이 저장된다.

 

# a와 b는 각각 서로 다른 메모리 주소를 가리키고 있음
a = [5,4,3,2,1]
b = [1,2,3,4,5]

b=a
# ▶ a와 b는 같은 메모리 공간을 가리키게 된다.
#    b가 a가 가리키고 있는 메모리 주소를 가리키게 됨
#    한쪽이 영향을 받게 되면 두 변수 모두 영향을 받게됨

a.sort()
# sort()는 기존 리스트를 정렬하기 때문에 a와 b 모두 영향을 받아 정렬됨

# 같은 공간을 가리키는 것을 막기 위해서는 재할당을 해줘야함
b = [6,7,8,9,10]

# 리스트 복사하는 방법
# a와 b는 같은 리스트를 갖는 것 처럼 보이지만 서로 다른 메모리 주소를 가지고 있다.
a = [5,4,3,2,1]
b = a[:]  # 값 각각을 복사해서 새로운 공간을 만든다

 

* 객체.sort() : 아무것도 리턴하지 않고 기존 리스트를 정렬

  sorted(객체) : 기존 리스트는 건드리지 않고 정렬된 새로운 리스트를 리턴

  ex) new_list = sorted( numbers, reverse=True ) 

  reverse=True는 큰 순서대로 ( 반대로 ) 정렬하라는 의미 

 

 

패킹과 언패킹

 

패킹 : 한 변수에 여러 개의 데이터를 넣는 것

언패킹 : 한 변수의 데이터를 각각의 변수로 반환

 

t = [1,2,3] # 1,2,3을 변수 t에 패킹

a,b,c, = t # t에 있는 값 1,2,3을 변수 a,b,c에 언패킹
# 변수의 갯수는 t가 가지고 있는 원소의 갯수와 일치해야함

 

 

copy 모듈

 

이차원 리스트를 복사하기 위해서는 copy 라이브러리가 필요하다.

이차원 리스트는 b = a[ : ] 방법을 사용할 수 없음.

 

import copy

kor_score = [49,79,20,100,80]
math_score = [43,58,85,20,90]
eng_score = [48,96,36,60,100]

# 이차원 리스트
midterm_score = [ kor_score, math_score, eng_score ]

# 이차원 리스트를 복사하는 방법
midterm_copy = copy.deepcopy(midterm_score)