Day_1 04. Variables
작성일
Variables
1. variable and memory
1.1 변수
- 가장 기초적인 프로그래밍 문법 개념
- 데이터(값)을 저장하기 위한 메모리 공간의 프로그래밍상 이름
>>> a = 5 >>> b = 3 >>> a + b 8
professor = "Shugchul Choi"
-
professor
라는 변수에 “Sungchul Choi” 값을 넣어라 -
좌항 : 변수, 우항 : 값
- 변수는 물리적으로 어디에 저장이 될까?
- 변수는 메모리 주소를 가지고 있고 변수에 들어가는 값은 메모리 주소에 할당됨
- 선언이 되는 순간 메모리 특정영역에 물리적인 공간이 할당됨
- 변수에는 값이 할당되고 해당 값은 메모리에 저장됨
1.2 변수명 작성법
- 알파벳, 숫자, 언더스코어(_)로 선언이 가능
- ex) data = 0, _a12 = 2, _gg = ‘afdf’
- 변수명은 의미 있는 단어로 표기하는 것이 좋음
- ex) professor_name = “Sungchul Choi”
- 변수명은 대소문자를 구분
- ex) ABC와 Abc는 같지 않다.
- 특별한 의미가 있는 예약어는 쓰지 않는다.
- ex) for, if, else 등
2. Basic Operation (간단한 연산)
- 간단한 사칙연산과 문자열 처리 등의 연산을 알아야함
2.1 기본 자료형
- data type
- 정수형 : integer(32bit)
- 실수형 : float(64bit)
- 문자형 : string
- 논리/불린 자료형 : boolean
- 파이썬에서는 굳이 타입을 선언하지 않아도 선언 형태에 따라서 코드의 실행 시점에 타입이 결정된다.
- Dynamic Typing
2.2 연산자와 피연산자
+, -, *, /
같은 기호들을 연산자라고 칭함- 연산자에 의해 계산되는 숫자들을 피연산자라 칭함
- 연산의 순서는 수학에서 연산 순서와 같음
- 문자간에도 + 연산이 가능함 -> concatenate
**
: 제곱/
: 나누기%
: 나머지- 증가연산, 감소연산
- a += 1 -> a = a + 1
- a -= 1 -> a = a - 1
2.3 데이터 형변환
- float() 와 int() 함수를 사용하여 데이터의 형 변환 가능
```python
a = 10 type(a)
<class ‘ìnt’>
float(a)
<class ‘float’>
아직 a는 int이다. 왜냐면, float(a)를 a에 할당해주지 않았기 때문. 단순 출력했을 뿐
type(a)
<class ‘int’>
- type이 맞는 것들 끼리만 연산이 가능
- 예전에는 정수만 저장하면 무한 소수로 표현되었음
- 문자열과 실수형 변환 가능
```python
>>> a = "76.3"
>>> type(a)
<class 'str'>
>>> float(a)
76.3
>>> b = float(a)
>>> type(a)
<class 'str'>
>>> type(b)
<class 'float'>
>>> a + b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "float") to str
- 문자는 문자끼리 연산이 가능
3. list
- 시퀀스 자료형,
- 문자는 문자끼리 여러 데이터들의 집합
3.1 인덱싱 (Indexing)
- list에 있는 값들은 주소(offset)를 가짐
>>> colors = ["red", "blue", "green"] >>> colors ['red', 'blue', 'green'] >>> colors[0] 'red'
3.2 슬라이싱 (Slicing)
- list의 값들을 잘라서 쓰는 것이 슬라이싱
>>> cities = ['서울','부산','인천','대구','대전','광주','울산','수원'] >>> cities[5:10] ['광주','울산','수원']
- 음수의 경우 순서를 뒤에서부터 카운트 한다.
- [a, b, c]
- a : 시작 인덱스
- b : 끝 인덱스
- c : 스텝인덱스 (몇 칸씩 점프할 것인지)
- [::-1]
- 거꾸로 한칸씩 갈 때 사용
3.3 리스트의 연산
- list의
+
연산- 리스트의 + 연산은 concatenate로 붙여서 나열된다.
>>> color = ["red", "blue", "green"]
>>> color2 = ["orange", "black", "white"]
>>> color + color2
['red', 'blue', 'green', 'orange', 'black', 'white']
- list의
*
연산
>>> color = ["red", "blue", "green"]
>>> color * 2
['red', 'blue', 'green', 'red', 'blue', 'green']
- append
>>> color = ["red", "blue", "green"]
>>> color.append('white')
>>> color
['red', 'blue', 'green', 'white']
- extend
>>> color = ["red", "blue", "green"]
>>> color.extend(['black', 'purple'])
>>> color
['red', 'blue', 'green', 'white', 'black', 'purple']
-
append 와 extend 는 print 해주지 않음
-
remove
>>> color.remove('white')
>>> color
['red', 'blue', 'green', 'black', 'purple']
- del
>>> del color[0]
>>> color
['blue', 'green', 'black', 'purple']
3.4 다양한 Data Type 이 하나에 List에 들어감
>>> a = ["color", 1, 0.2]
>>> color = ['yellow', 'blue', 'green', 'black', 'purple']
>>> a[0] = color # 리스트 안에 리스트도 입력 가능
>>> print(a)
[['yellow', 'blue', 'green', 'black', 'purple'], 1, 0.2]
- 메모리 주소를 참조하기 때문에 리스트 안에 리스트도 들어갈 수 있음
>>> a = [5,4,3,2,1]
>>> b = [1,2,3,4,5]
# 메모리 공간이 각각 생김
>>> b = a
# 선언하는 순간 b가 가리키는 공간이 끊기고 b는 a가 가리키는 것과 같은 공간을 가리킨다.
>>> b
[5,4,3,2,1]
>>> a[3]=100
[5,4,3,100,1]
>>> b
[5,4,3,100,1]
# 이렇게 하면 b는 a를 복사하지만 같은 곳을 가르키진 않는다.
# 따라서 a를 바꿔도 b는 그대로임.
>>> b = a[:]
3.5 패킹과 언패킹
- 패킹 : 한 변수에 여러 개의 데이터를 넣는 것
- 언패킹 : 한 변수의 데이터를 각각의 변수로 반환
>>> t = [1,2,3]
>>> a,b,c = t
>>> print(a,b,c,t)
1, 2, 3, [1,2,3]
3.6 이차원 리스트
- 리스트 안에 리스트를 만들어 행렬(Matrix) 생성
>>> kor_score = [49, 79, 20, 100, 80]
>>> math_score = [43, 59, 85, 30, 90]
>>> eng_score = [49, 79, 48, 60, 100]
>>> midterm_score = [kor_score, math_score, eng_score]
>>> midterm_score
[[49, 79, 20, 100, 80], [43, 59, 85, 30, 90], [49, 79, 48, 60, 100]]
- 이차원 리스트를 복사하는 방법?
- midterm_score[:] 방법이 안됨
- copy 라이브러리 사용
>>> import copy
>>> kor_score = [49, 79, 20, 100, 80]
>>> math_score = [43, 59, 85, 30, 90]
>>> eng_score = [49, 79, 48, 60, 100]
>>> midterm_score = [kor_score, math_score, eng_score]
>>> midterm_copy = copy.deepcopy(midterm_score)
>>> midterm_copy[0][0] = 100
>>> midterm_copy
[[100, 79, 20, 100, 80], [43, 59, 85, 30, 90], [49, 79, 48, 60, 100]]
>>> midterm_score
[[49, 79, 20, 100, 80], [43, 59, 85, 30, 90], [49, 79, 48, 60, 100]]
댓글남기기