반응형
* 위 강의노트는 패스트캠퍼스에서 주관하는 강의를 수강하고 작성한 노트입니다.
Python Programming 기초
데이터 타입과 컬렉션 - 기본 타입 및 변수의 이해
- 변수란 무엇인가?
- 데이터를 저장하는 공간, 변수
- 저장공간(memory)에 값을 생성하고 이름(name)을 지정
-> 이름(name)이라는 상자(공간) 에 값을 넣는 것 - =(대입연산자)를 사용하여 왼쪽은 변수명, 오른쪽은 데이터가 위치
a = 10 # int
b = 11.4 # float
-
Comment(주석)
- 코드에서 # 으로 시작하는 뒷 부분은 실행되지 않음
- python이 소스코드를 실행하면서 # 을 만나면 무시
- 개발자(사람)가 보기 위한 용도로 사용
- 코드에 대해 부연설명을 하는 역할
-
print함수
- 함수란? -> 특정 기능을 반복적으로 호출하여 사용 가능한 코드블럭
- 해당 변수의 값을 출력
- , 로 여러 변수를 나열하면 한줄에 모두 출력
- 기본적으로는 한칸 띄어쓰기 후 출력
print(a, b)
>> 10 11.4. ## 사이에 띄어쓰기가 존재함
- print함수 설정
- sep : 구분자, 각 출력할 변수 사이에서 구별하는 역할을 함
- end: 마지막에 출력할 문자열
print(a, b, 10, 100, sep = ‘*’, end = ‘!!’)
>> 10*11.4*10*100!!
-
변수 값 확인법
- print() 함수 사용
- 변수 값을 코드의 마지막에 위치시킨 후 실행
- 이 경우 output으로 변수의 값이 출력
- 이 경우 output으로 변수의 값이 출력
-
variable naming (변수 이름 규칙)
- 숫자로 시작하는 이름을 제외하고 영문 대소문자, _, 숫자로 구성가능
- 아래의 예제는 모두 valid한 변수 이름
- 일반적으로 해당 변수를 표현하고자 하는 정확하고 간결한 이름을 사용하는 것이 원칙임
- 코드를 읽은 것을 더 쉽게 할 수 있음
- e.g) a = 1000의 경우보다 student_num = 1000으로 명시한 것이 변수에 대한 이해가 빠름
- 숫자로 시작하면 안되는 이유?
-> 숫자로 변수를 설정한 경우 나중에 변수를 사용할 때 혼동이 오기 때문에
-
reserved keywords (예약어)
- python에서 미리 선점하여 사용중인 키워드
- 변수, 함수, 클래스 등등의 사용자 정의 이름으로 사용할 수 없음
- 사용하려 할 때 녹색으로 바뀌면 그것은 예약어!
-> ex) class if, else …
Python의 기본 데이터 타입
- 정수(int)
- 실수(float)
- 문자열(str)
-
불리언(boolean)
-
type 함수
- 해당 변수, 값의 타입(type)을 알고자 할 때 사용
- type()을 통해 변수의 타입을 알 수 있다
-
None
- 아무런 값을 갖지 않을 때 사용
- 일반적으로 변수가 초기값을 갖지 않게 하여 해당 변수를 생성할 때 사용
- 기타 언어의 NULL, nil등과 같은 의미로 사용
- 변수를 사용하나, 어떤 변수를 사용할 지 아직 알지 못할 때 사용
- comparison operator(비교연산자)
- 프로그래밍에서는 비교를 할 경우, = 대신 ==를 사용
- <,>(작다, 크다)
- <=,>=(작거나 같다, 크거나 같다)
- == (같다)
- != (같지 않다)
- 비교 연산자의 결과는 bool 타입
a = 5
b = 4
print(a > b)
>> True
print(a < b)
>> False
-
numbers(숫자형 타입)
- 정수, 실수로 구성
- 수학의 기본 연산자(가감승제) 사용 가능
-
operator priorties (연산자 우선순위)
- 기본적인 수학의 연산자와 동일
- 강제로 연산을 선수하기 위해선, 괄호()를 사용
> a = 5
> b = 4
> print(a + b * 4)
> >> 21
> print((a+b)*4)
> >> 36
- expression evaluation & assignment (식평가 & 대입)
- 변수의 값이 변경되기 위해서는 = 을 사용하여 대입이 발생하는 경우에만 해당
- 다시 = 를 사용하여 대입하지 않는 이상 값이 변동하지는 않음
데이터 타입과 컬렉션 - 문자열 타입의 이해 및 활용하기
- string(문자열)
- 복수개의 문자를 순서대로 나열한 것
- 문자열은 ‘(작은 따옴표) 혹은 “(큰 따옴표) 사이에 문자를 넣어 생성
- 문자열 자체에 ‘,”가 있는 경우에는 각각 그 반대의 기호로 생성
- ‘’’ ‘’’ 사용하여 표현 가능
- 차이점
- ‘’, “” -> 한줄 문자열 표현
- ‘’’ ‘’’ -> 여러 줄에 걸쳐 문자열 표현 가능
a = ‘hello world’
b = “hello world’
c= ‘’hello world’’
d = “”” hello world”””
>> 다 같은 모양으로 출력
-
escaoe string(이스케이프 문자)
- 문자열 내의 일부 문자의 의미를 달리하여 ‘특정한 효과’를 주는 것
\n
: new line,\t
: tab
-
indexing & slicing sting (문자열 인덱스 및 추출)
- 문자열의 각 문자는 순서가 있음
- 이때 각 문자열의 순서를 인덱스 라고 함
- 첫번째 문자부터 마지막까지 차례대로의 순서를 가짐
- 첫번째 시작문자의 순서는 0으로 시작 (1이 아님!)
a = ‘hello world’ # 길이 : 11
print(len(a))
>> 11
print(a[10])
>> d
- -1 인덱스
- 다른 언어와는 달리, python의경우 음수 인덱스를 지원
- -1이 가장 마지막 인덱스를, -2가 마지막에서 두번재 인덱스를 의미
a = ‘hello world’
print(a[0]) # h
print(a[10]) # d
print(a[-1]) # d
print(a[-11]) # h
-
인덱스의 범위
- 인덱스는 [0, 문자열의 길이) 의 범위만 유효
- 음수 인덱스를 사용할 경우, [-문자열의 길이, -1]
- 범위를 넘어갈 경우 에러 발생
-
문자열 slicing
- 인덱스가 하나의 문자만을 추출한다면,
- slicing은 부분 문자열을 추출한다고 볼 수 있음
- [시작:끝]와 같이 명시하여 [시작:끝) 에 해당하는 부분 문자열을 추출
- 시작, 끝 인덱스가 생략이 되어 있다면 0부터 혹은 끝까지로 간주
a = ‘hello world’
a[0:4] # 마지막 인덱스는 가져오지 않음
>>‘hell’
a[:5] # 앞뒤생략 가능, 생략하면 처음부터라고 생각하면 됨!
>>’hell’
- 문자열 함수
- 문자열은 여러가지 기능 제공을 위한 함수를 내장
a = ‘hello world’
a.upper # 대문자로 전환
>> ‘HELLO WORLD’
a.replace(‘h’, ‘j’) # 문자열 내의 특정 문자를 치환
>>’jello world’
# format : 문자열 내의 특정한 값을 변수로부터 초기화하여 동적으로 문자를 생성
temperature = 25.5
prob = 80
a = ‘오늘 기온은 {}도이고, 비올 확률은 {}% 입니다’.format(temperature, prob)
print(a)
>> ‘오늘 기온은 25.5도이고, 비올 확률은 80% 입니다’
a = ‘hello world what a nice weather’
a.split() # 특정 문자열을 기준으로 문자열을 쪼개는 함수 (defalt : ‘ ‘)
>> [‘hello’, ‘world’, ‘what’, ’a’, ‘nice’, ‘weather’]
데이터 타입과 컬렉션 - 컬렉션 타입의 이해
리스트 & 튜플
- 복수개의 값을 담을 수 있는 데이터 구조
- 실생활에서 사용하는 리스트(학생 리스트, 성적 리스트 등) 과 동일한 의미로 이해
- list - mutable(생성된 후에 변경 가능)
- tuple - immutable(생성된 후에 변경 불가능)
리스트 초기화
- [] 안에 값을 담아서 생성
- list() 함수로 생성
- str.split()함수로 생성
a = [1,2,3] # []안에 값을 담아서 생성
a = [‘korea’ , 1 , [23, 34]] # 리스트 안에 어떤 형태든 괜찮음
a = ‘hello world’
b = list(a) # list()로 리스트 생성
print(b)
>> [‘h’,’e’,’l’,’l’,’o’,‘ ‘,’w’,’o’,’r’,’l’,’d’]
a = ‘hello world’
b = a.split() # str.split()로 리스트 생성
print(b)
>> [‘hello’ , ‘world’]
- 리스트 indexing
- 문자열의 인덱싱과 동일하게 동작
- []연산자를 이용하여 항목 얻어오기
- [i] - i번째 원소를 반환
- i가 음수인 경우도 가능하며 마지막 원소가 -1로하여 앞으로 갈때마다 1씩 감소함
a = [1,2,3,4,5,6]
print(a[1])
>> 2
-
리스트 개별 아이템에 접근
- 인덱스에 접근하여 값을 업데이트 가능
- [중요] str은 불변 객체이기 때문에 item assignment가 되지 않는다!
- list는불변 객체가 아니기 때문에 값에 대한 변경이 가능하다!
-
리스트 slicing
- 문자열 슬라이싱과 동일하게 동작
- 슬라이싱의 결과 역시 list!!
-
list 멤버 함수
- 생성된 리스트 객체에 동작하는 함수
- 생성된 리스트 객체에 동작하는 함수
- append()
- 리스트의 끝에 항목을 추가함
a = [1,2,3,4,5]
a.append(10) # list의 끝에 항목 추가
print(a)
>> [1,2,3,4,5,10]
- extend()
- 리스트를 연장
- +=로도가능함
a = [1,2,3,4,5]
b = [6,7,8,9,10]
a.append(b)
>> [1,2,3,4,5,[6,7,8,9,10]]
a.extend(b)
>> [1,2,3,4,5,6,7,8,9,10]
- insert()로 항목 추가
- 리스트의 원하는 위치에 추가 가능
- 앞에 인덱스를, 뒤에 아이템을 명시
a = [1,2,3,4,5]
a.insert(1, 40) # 첫번째 자리에 40이라는 요소를 추가(2는사라짐)
print(a)
>> [1, 40, 3, 4, 5]
- remove()
- 값으로 항목 삭제
a = [1,2,3,4,5]
a.remove(2)
>> [1,3,4,5]
a = [1,2,3,3,4,5]
a.remove(3) # 가장 앞의 것만 없어짐
>> [1,2,3,4,5]
- pop()
- 지우고자 하는 아이템을 반환하고 삭제
a = [1,2,3,4,5]
a.pop(2) # 값 반환
>> 2
print(a) # 반환 후 값 삭제
>> [1,3,4,5]
- index()
- 찾고자 하는 값의 인덱스를 반환
a = [1,2,3,4,5]
a.index(3)
>> 2
- in 키워드
- 리스트 내에 해당하는 값이 존재하는지 확인
- value in [list]
- True, False 중 한가지로 반환
a = [1,2,3,4,5]
3 in a
>> True
10 in a
>> False
- list 정렬
- sort() -> 리스트 자체를 내부적으로 정렬
- sorted() -> 리스트의 정렬된 복사본을 반환
a = [9, 10, 7, 19, 1, 2, 20, 21, 7, 8]
a.sort() # 오름차순으로 정렬
print(a)
>> [1, 2, 7, 7, 8, 9, 10, 19, 20, 21]
a.sort(reverse = True) # 내림차순으로 정렬
print(a)
>> [21, 20, 19, 10, 9, 8, 7, 7, 2, 1]
tuple
- 리스트와 같이 복수개의 값을 갖는 컬렉션 타입
- 생성된 후 변경이 불가능
a = (1, 2, 3) # ()를사용해서 튜플 생성
print(a)
>> <class ‘tuple’>
-
튜플은 언제 사용하는가?
- 문법적으로 편의성을 주기 위해서!
- 괄호를 생략해도 튜플로 나옴
-
tuple unpacking
- 튜플의 값을 차례대로 변수에 대입
- 변수를 여러개 생성할 때 사용
a, b, c, d = 100, 200, 300, 400
print(a)
>> 100
print(b)
>> 200
# tuple unpacking을 이용해서 값을 서로 바꿀수도 있음
a, b = b, a
dictionary
* 키와 값을 갖는 데이터 구조
* 키는 내부적으로 hash값으로 저장 -> 키를 알면 그걸 불러오는 시간이 걸리지 않는다는 장점!
* 순서를 따지지 않음. 즉, 인덱스가 없음
a = {‘korea’ : ‘seoul’,
‘canada’ : ‘Ottawa’,
‘usa’ : ‘washington D.C’}
b = {}
type(a)
>> dict
type(b)
>> dict
print(a[‘korea’]) # ‘korea’에 해당하는 값을 가져오기
>> seoul
- 항목 추가 및 변경
- 기존에 키가 존재하면, 새로운 값으로 업데이트
- 존재하지 않으면, 새로운 키, 값 생성
a = {‘korea’ : ‘seoul’,
‘canada’ : ‘Ottawa’,
‘usa’ : ‘washington D.C’}
a[‘japan’] = ‘tokyo’ # key, value 값 추가
print(a)
>> {‘korea’ : ‘seoul’, ‘canada’ : ‘Ottawa’, ‘usa’ : ‘washington D.C’, ‘japan’ : ‘tokyo’}
[중요] : dict는 키와 값이 있기 때문에 키의 중복이 되지 않는다. 같은 키를 두번 대입하면 업데이트 될 뿐이다.
- set
- dictionary에서 key만활용하는 데이터 구조로 이해
- 수학에서의 집합과 동일한 개념
- 중복되이 되지 않음
- 인덱싱이 없음
a = {1,2,3,4,5,5,5}
print(a)
>> {1,2,3,4,5}
# set()으로 집합으로 변환
a = [1,2,3,4,5,5,5] # list
ptint(set(a))
>> {1,2,3,4,5}
a = {1, 2, 3}
b = {2, 3, 4}
# union으로 두개의 set 합집합으로 만들기
print(a.union(b))
>> {1, 2, 3, 4}
# intersection으로 교집합 만들기
print(a.intersection(b))
>> {2, 3}
# difference로 차집합 만들기
print(a.difference(b))
>> {1}
# issubset으로 부분집합인지 확인하기
print(a.issubset(b)) # a가 b의부분집합인가?
>> False
반응형
'Study > ML_Basic' 카테고리의 다른 글
머신러닝과 데이터 분석 A-Z 올인원 패키지 - 데이터 수집을 위한 Python(1) (0) | 2020.09.10 |
---|---|
[수강 후기]머신러닝과 데이터분석 A-Z 올인원 패키지 - python programming 기초 (0) | 2020.09.08 |
머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(4) (0) | 2020.09.03 |
머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(3) (0) | 2020.09.03 |
머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(2) (0) | 2020.09.03 |