Variable
1. 변수 : Variables
값을 저장하기 위한 메모리 공간
a=5
5가 값, a가 메모리 공간의 이름이자 변수
변수는 메모리 주소를 가지고 있고, 값은 메모리 주소에 할당된다.
2. 변수 이름 작명법
- 예약어 불가
- 대소문자 구문
- 의미 있는 단어로 표시 ex) aaa,axx 같은 것은 별로 좋지 않다
- _, 영어 대소문자, 숫자 가능
3. 기본 자료형 : primitive data types
- integer : 정수형 : 양의정수와 음의정수와 0 : 32bit
- float : 실수형 : 소수점이 포함된 실수
- string : 문자형 : ""이나 '' 로 묶인 문자
- boolean : 참 또는 거짓 두 가지 값으로만 이루어짐 : a=True
a=True
type(a)
type() 으로 자료형을 알 수 있다
Dynamic Typing
코드를 실행하는 시점에 자료형을 결정하는 것
중간에 자료형을 바꾸는 과정이 편하다.
JAVA는 python과 달리 변수 선언시 자료형을 미리 쓴다.
데이터 형 변환
a=2
a=float(a)
# a에 float(a)로 다시 저장해 주어야 a가 float형으로 할당됨
b=2.4
b=int(b)
b
>>>2
소수점이 있는 float에 int()를 취해주면 소수점 내림이 적용된다.
4. 연산자 : operator
숫자뿐 아니라 문자도 피연산자가 될 수 있다.
- +,- ,/(나누기), %(나머지), **(제곱)
- 할당연산자 : 증가연산, 감소연산
1번 방법과 2번 방법이 같다.a=2 # 1번 방법 a=a+1 # 2번 방법 a+=1 #감소연산 a-=3
/=, **= 등 도 가능하다
List
시퀀스 자료으로 여러 다른 자료형의 데이터들을 하나의 변수에 넣기 위한 데이터 구조이다.
그래서 다양한 data type이 하나의 list에 들어갈 수 있다.
1. 인덱싱 Indexing
: 특정 위치에 있는 값을 참조하는 것
list 의 값들은 주소(offset)을 가진다.
각 요소를 element라고 부른다
blood=['A','B','AB','O']
print(blood[2])
offset으로 각 element를 하나씩 불러서 사용할 수 있다.
-1은 끝에서 첫번째 값을 의미한다
blood[-2]
>>'AB'
-를 사용하면 끝에 있는 값들을 사용하기 쉽다
보통이 주소를 index라고 부른다
2. 슬라이싱 : Slicing
: 일부 범위를 추출하는 것
blood[0:2]
>>['A','B']
list를 원하는 길이만큼 잘르는 것을 슬라이싱이라고 한다.
[시작값:끝값] 이라면 시작값~끝값-1 만큼의 부분을 슬라이싱한다.
blood[:-2]
>>['A','B']
-를 사용해서 슬라이싱을 할 수 있다
blood[1:4:2]
>>>['B', 'O']
[시작 index, 끝 index, step]
step은 몇 개씩 띄고 슬라이싱할 것인지를 의미한다.
blood[::-1]
>>>['O', 'AB', 'B', 'A']
비우면 처음과 끝이 자동으로 지정된다.
그래서 이 코드는 처음부터 끝까지 역으로 거꾸로 슬라이싱한다.
3. 리스트 연산
- concatenation
blood+blood >>>['A', 'B', 'AB', 'O', 'A', 'B', 'AB', 'O'] blood*2 >>>['A', 'B', 'AB', 'O', 'A', 'B', 'AB', 'O']
- is_in
blood라는 리스트에 'A'라는 elemen가 존재하기 때문에 True 반환'A' in blood >>>True
- append
리스트의 맨 끝에 element를 추가한다
blood=blood.append() 처럼 할당을 하지 않아도 저장됨에 주의하자blood.append('A+') blood >>>['A', 'B', 'AB', 'O', 'A+']
- extend
리스트의 끝에 리스트를 연장(추가)시킨다.
blood.extend(['B+','B-']) blood >>>['A', 'B', 'AB', 'O', 'A+', 'B+', 'B-']
- remove
해당 값을 가진 element를 앞에서 부터 차례로 지워나간다.blood.remove('A+') blood >>>['A', 'B', 'AB', 'O', 'B+', 'B-']
그래서 같은 값이 여러 개 있다면 앞에서 부터 없어진다 - del
2번 인덱스에 있던 'AB'값이 사라졌습니다.del blood[2] blood >>['A', 'B', 'O', 'B+', 'B-']
4. 메모리 저장 방식
리스트 변수에는 리스트 주소값이 저장된다
blood=['A','B','AB','O']
data=blood
blood[1]='B+'
blood
>>>['A', 'B+', 'AB', 'O']
data
>>>['A', 'B+', 'AB', 'O']
그래서 data=blood라고 하면 blood 주소값을 data주소값에 들어가게 되어서 두 리스트가 같은 주소에 연결된다.
그러한 이유로 blood[1]만 바꾸었지만 data도 blood의 값들을 가리키고 있기 때문에 두 리스트가 동시에 바뀐다.
이런 현상을 피하려면
data=blood[:]
처럼 전체를 슬라이싱해서 각 값들을 복사하면 된다.
또는
.copy()를 사용해서 list자체를 복사해도 된다. 하지만 이것은 이차원리스트부터는 작동하지 않는다.
또는
import copy
blood=['A','B','AB','O']
blood_copy=copy.deepcopy(blood)
blood_copy[1]='B-'
blood
>>['A', 'B', 'AB', 'O']
copy 모듈의 deepcopy를 사용해도 된다.
이 방법은 다차원 리스트에서 사용할 수 있다.
5. 패킹과 언패킹
blood=['A','B','AB','O'] #패킹
kim, lee, park, choi=blood
print(kim, choi)
>>>A O
blood라는 한 변수에 여러 데이터를 넣는 것을 패킹이라고 한다.
그리고 리스트 각각 하나씩이 변수에 풀어서 저장되는 것을 언패킹이라고 한다.
'부스트캠프 AI Tech 3기 > 이론 : U-stage' 카테고리의 다른 글
[Day2] Python 2-3. Conditionals and Loops : Condition, Loop, debugging (0) | 2022.01.19 |
---|---|
[Day2] Python 2-2. Function and Console I/O : 함수, Console in / out (0) | 2022.01.19 |
[Day1] Python 1-3. 파이썬 코딩 환경 : Anaconda, VSCode, Jupyter Notebook (0) | 2022.01.19 |
[Day1] Python 1-2. 파이썬 개요 (0) | 2022.01.19 |
[Day1] Python 1-1. Basic computer class for newbies : File System & Terminal Basic (0) | 2022.01.19 |