Day_1 04. Variables

작성일

4 분 소요

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]]

댓글남기기