혜잉이의 소소한 공간

[#5] 변수 (Variables) 본문

AI/인공지능#1

[#5] 변수 (Variables)

kimhyeing 2025. 6. 22. 10:18

 

🧠 Python 기초 개념 정리 : 변수와 리스트

 

✅ 1. 변수 (Variable)

 

📌 변수란 ?

  • 값을 저장하는 메모리 공간에 붙인 프로그래밍상의 이름
  • 수학에서 x, y처럼 사용하지만, 프로그래밍에선 값이 저장되는 '주소' 개념

 

🧾 예시

professor = "Sungchul Choi"
  • "Sungchul Choi"라는 값을 professor라는 변수(메모리 주소)에 저장

 

 

더보기

※ 컴퓨터의 구조 - 폰 노이만 아키텍처

 

사용자가 컴퓨터에 값을 입력하거나 프로그램을 실행할 경우 그 정보를 먼저 메모리에 저장시키고

CPU가 순차적으로 그 정보를 해석하고 계산하여 사용자에게 결과값 전달

 

값은 메모리 어딘가에 전달된다라는 의미

 

 


📍 변수와 메모리

 

professor → "Sungchul Choi"
a         → 3
b         → 7
  • 변수에 값이 할당되면 실제 메모리 주소에 저장됨

 


🧠 작명 규칙

 

  • 알파벳, 숫자, 언더스코어(_) 사용 가능 (숫자로 시작은 ❌)
  • 의미 있는 이름 사용 권장 (professor_name)
  • 대소문자 구분 (Name ≠ name)
  • 예약어 사용 금지 (for, if 등)

 


🔢 2. 기본 자료형 (Primitive Data Types)

- data type : 파이썬이 처리할 수 있는 데이터 유형

int 정수형 1, 0, -5
float 실수형 3.14, -0.5
str 문자열 ('' / "") "hello"
bool 논리형 (True/False) True, False

※ 메모리가 차지하는 공간의 크기가 달라진다는 점을 참고

 
type(3)       → <class 'int'>
type("hi")    → <class 'str'>
type(3.0)     → <class 'float'>

 

→ 코드 실행시점에 데이터의 Type 을 경정하는 방법 : Dynamic Typing (인터프리터 언어만의 장점)

 


🔁 3. 연산자 (Operators)와 피연산자 (Operand)

→ 연산자에 의해 계산되는 숫자들은 피연산자라 정의

 

 

+ 덧셈 / 문자열 연결 3 + 2, "a" + "b"
- 뺄셈 5 - 2
* 곱셈 3 * 2
/ 나눗셈 7 / 2 → 3.5
** 제곱 3 ** 2 → 9
% 나머지 7 % 2 → 1

 

 

➕ 증가/감소 연산

a = 1   				# 변수 a 에 1을 할당
a += 1  				# a = a + 1 (간단한 기호로 표시)	
a -= 1  				# a = a - 1

 

 


🔄 4. 자료형 변환 (Casting)

→ float()와 int() 함수를 사용하여 데이터의 형 변환 가능


int() 정수형으로 변환 int(3.5) → 3
float() 실수형으로 변환 
정수형으로 변환할 경우 내림이라는 것 참고 
float("3.14")
str() 문자열로 변환 str(10.5) → "10.5"
 

 

 


📋 5. 리스트 (List) 

 

📌 리스트란?

  • 여러 개의 값을 하나의 변수에 저장하는 시퀀스 자료형
colors = ["red", "blue", "green"]

 

🔍 특징


인덱싱 (Indexing)
- 주소를 가짐
colors[0] → 'red'


슬라이싱 (Slicing)
- 부분 값을 반환

colors[1:3] → ['blue', 'green']


→ [5:10] : 5번째부터 9까지 출력



→ [0:10:2] : 0번째부터 9까지 2칸씩 출력


추가 append(), extend(), insert()


삭제 remove(), del
연산 +, *, 'blue' in colors 등
중첩 리스트 안에 리스트도 가능

→ 다른 프로그래밍 언어는 하나의 데이터 타입만 리스트안에 넣을 수 있지만 파이썬은 다 넣을 수 있음 


b = a 로 하면 b 는 a 를 가리키게 되지만(메모리 주소공간 참조) 

b = a[:] 로 하게 되면 복사(Copy)를 하게 되므로 a의 주소 공간을 가리키지 않게 되므로 따라가지 않음 

 

📦 패킹 & 언패킹

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

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

 

t = [1, 2, 3]
a, b, c = t  # 언패킹

 

 


🧮 이차원 리스트

리스트 안에 리스트를 만들어 행렬 생성

 

✅ 행렬처럼 다룰 수 있는 리스트

kor = [49, 79, 20]
math = [43, 59, 85]
eng = [49, 79, 48]

scores = [kor, math, eng]
print(scores[0][2])  # 출력: 20

 

→ [:] copy 할 때는 1차원 행렬에서는 가능했지만 2차원 행렬에서는 값이 변경되므로 아래와 같은 명령어로 수행

 

 

🧠 기타

  • 동적 타이핑(Dynamic Typing) : 변수 선언 시 타입을 미리 지정하지 않음
  • 반올림 오차 : 컴퓨터는 실수를 2진수로 저장하며, 무한소수로 인해 소수점 오차 발생 가능
  • = 기호 : 값 복사가 아니라 메모리 주소를 참조하는 개념임