[머신러닝 인강] 1. Python Programming 기초(2)
dictionary
- 키와 값을 갖는 데이터 구조
- 키는 내부적으로 hash값으로 저장
- 순서를 따지지 않음
a = {'Korea': 'Seoul',
'Canada': 'Ottawa',
'USA': 'Washington D.C'}
b = {0:1, 1:6, 7:9, 8:10}
- 항목 추가 및 변경
- 기존에 키가 존재하면, 새로운 값으로 업데이트
- 존재하지 않으면, 새로운 키, 값 생성
a = {'Korea': 'Seoul',
'Canada': 'Ottawa',
'USA': 'Washington D.C'}
a['Japan'] = 'Tokyo'
a['Japan'] = 'Kyoto'
a['Japan2'] = 'Kyoto'
a['China'] = 'Beijing'
print(a)
"""
{'Korea': 'Seoul', 'Canada': 'Ottawa',
'USA': 'Washington D.C', 'Japan': 'Kyoto',
'Japan2': 'Kyoto', 'China': 'Beijing'}
"""
- update
- 두 딕셔너리를 병합함
- 겹치는 키가 있다면 parameter로 전달되는 키 값이 overwrite된다
a = {'a': 1, 'b': 2, 'c' : 3}
b = {'a': 2, 'd': 4, 'e': 5}
a.update(b)
print(a) # {'a': 2, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
- key삭제
- del 키워드 사용
- pop 함수 이용
a = {'a': 1, 'b': 2, 'c' : 3}
print(a) # {'a': 1, 'b': 2, 'c': 3}
del a['b'] # a.pop('b')
print(a) # {'a': 1, 'c': 3}
- clear
- 딕셔너리의 모든 값을 초기화
a = {'a': 1, 'c' : 3}
print(a) # {'a': 1, 'c': 3}
a.clear()
print(a) # {}
- in
- key값 존재 확인
- O(1) 연산 → 딕셔너리의 크기와 관계없이 항상 연산의 속도가 일정하다는 의미
a = {'a': 1, 'b': 2, 'c' : 3}
b = [1, 2, 3, 4, 5, 6, 7, 9, 10, 100]
print(100 in b) # Ture
print(2 in a) # False
- value access
- dict[key]로 접근, 키가 없는 경우 에러 발생
- .get() 함수로 접근, 키가 없는 경우 None 반환
a = {'a': 1, 'b': 2, 'c' : 3}
print(a.get('d')) # print(a['d']) -> None
모든 keys, values 접근
- keys() → 키만 반환
- values() → 값만 반환
- items() → 키, 값의 튜플을 반환
a = {'a': 1, 'b': 2, 'c' : 3}
print(a) # {'a': 1, 'b': 2, 'c': 3}
print(list(a.keys())) # ['a', 'b', 'c']
print(list(a.values())) # [1, 2, 3]
list(a.items()) # [('a', 1), ('b', 2), ('c', 3)]
set
- dictionary에서 key만 활용하는 데이터 구조로 이해
- 수학에서의 집합과 동일한 개념
a = {1, 1, 2, 3, 3, 4, 1, 5}
print(a) # {1, 2, 3, 4, 5}
- set()으로 집합으로 변환
a = [1, 1, 2, 3, 3, 4, 1, 5]
print(a) # [1, 1, 2, 3, 3, 4, 1, 5]
b = set(a)
print(b) # {1, 2, 3, 4, 5}
- set operations
- 수학 연산과 동일
- 교집합, 합집합, 차집합 등 지원
a = {1, 2, 3}
b = {2, 3, 4}
print(a.union(b)) # 합집합 {1, 2, 3, 4}
print(a.intersection(b)) # 교집합 {2, 3}
print(a.difference(b)) # 차집합 {1}
print(a.issubset(b)) #부분 집합 False
조건문 & 반복문
조건문
- 특정 조건을 만족하는 경우에만 수행할 작업이 있는 경우 사용
- 모든 조건은 boolean
- if, elif, else 키워드 사용
Logical AND, OR, NOT
- 조건문에 사용되는 조건의 경우, boolean이기 때문에, 논리식 AND, OR, NOT 이 사용가능
- AND : and
- OR : or
- NOT : not
논리표
- AND
- T AND T : T
- T AND F : F
- F AND T : F
- F AND F : F
- OR
- T OR T : T
- T OR F : T
- F OR T : T
- F OR F : F
- NOT
- NOT T : F
- NOT F : T
- 우선순위
- NOT > AND > OR
a, b, c = 10, 8, 11
if (a == 10 or b == 9) and c == 12: # (T or F) and F -> F
print('that is true')
if not a == 10: # not T -> F
print('a is ten')
if의 조건이 bool이 아닌 경우
- 일반적으로는 조건문에는 bool이 주로 위치
- 하지만, 정수, 실수, 문자열 리스트 등 기본 타입도 조건에 사용 가능
- False로 간주되는 값( 각 타입의 기본값)
- None
- 0
- 0.0
- ""
- []
- ()
- {}
- set()
- 그밖에는 모두 True로 간주
if, else
- if가 아닌 경우, 나머지 조건을 표현하고 싶다면 바로 아래 else 블락 사용
- 이 경우, if조건이 True인 경우, if 블락의 코드가 수행, 거짓인 경우 else 블락의 코드가 수행
- 주의 할 점 : if와 else사이에 다른 코드 삽입 불가
# 짝수인 경우에는 2로 나눈 값을 출력하고
# 홀수인 경우에는 1을 더한 값을 출력해라
a = 12
if a % 2 == 0: # 짝수인지 판별
print(a / 2)
else:
print(a + 1)
if, elif, else
- 조건이 여러개인 경우, 다음 조건을 elif 블록에 명시 가능
- 이 경우, 각 조건을 확인 후, True인 조건의 코드 블락을 실행 한 후, 전체 if, elif, else 구문을 종료
- 조건문을 사용할 때는, if 이후, 0개 이상의 elif를 사용 가능하며 최대 1개의 else를 사용 가능함
중첩 조건문
- 조건문의 경우 중첩하여 작성 가능
- 중첩의 의미는 depth(깁이)로 생각할 수 있으며, depth의 제한은 없음
a, b, c = 10, 9, 8
if a == 10:
if c == 8:
if b == 8:
print('a is ten and b is 8')
else:
print('a is ten and b is not 8')
머신러닝과 데이터 분석 A-Z 올인원 패키지 Online. 👉 https://bit.ly/3cB3C8y
Author And Source
이 문제에 관하여([머신러닝 인강] 1. Python Programming 기초(2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kgo0926/머신러닝-인강-1.-Python-Programming-기초2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)