<2-1주차 수강 클립>
01. Python Programming 기초
07. 데이터 타입과 컬렉션 - 04. 컬렉션 타입 이해 - 1 (List)
08. 데이터 타입과 컬렉션 - 05. 컬렉션 타입 이해 - 2 (List)
09. 데이터 타입과 컬렉션 - 06. 컬렉션 타입 이해 - 3 (Tuple)
10. 데이터 타입과 컬렉션 - 07. 컬렉션 타입 이해 - 4 (Dict)
11. 데이터 타입과 컬렉션 - 06. 컬렉션 타입 이해 - 3 (Set)
2-1주차에는 파이썬에서 사용할 수 있는 컬렉션(혹은 컨테이너) 타입에 대해 배워보았는데요,
컬렉션에는 리스트, 튜플, 딕셔너리, 셋 등이 있습니다.
네 가지 모두 특징이 달라서 잘 기억해둬야 합니다 !
>>수강 인증샷<<
07-08. 데이터 타입과 컬렉션 - 04. 컬렉션 타입 이해 (List)
-리스트란?
복수개의 값을 담을 수 있는 데이터 구조 중 하나로, 생성된 이후 변경 가능 (=mutable)
-리스트 초기화
1. 변수 = []
2-1. list()함수: 다른 데이터 타입을 리스트로 변환할 때도 사용 (캐스팅이라고 생각!)
ex) 문자열 to 리스트: list('hello world') 하면 각 문자를 원소로 가지는 리스트가 생성!
2-2. string의 split()메소드: 구분자(디폴트는 white space)로 구분되는 원소들의 리스트를 반환 (빈번히 사용됨)
-리스트 인덱싱
문자열의 인덱싱과 동일한 zero-based indexing (0부터 시작!)
[]연산자를 이용하여 항목을 얻어옴. ex) [i]: i번째 원소를 반환 (i = 0~length-1)
역시 i가 음수인 경우도 가능하며, 마지막 원소가 -1로 하여 앞으로 갈 때마다 1씩 감소함.
**리스트는 인덱스를 이용해 개별 원소에 접근&동적으로 업데이트(변경) 가능함!!
-리스트 슬라이싱
문자열의 슬라이싱과 동일하게 동작, 슬라이싱의 결과 역시 리스트!
[시작 인덱스:끝 인덱스:증분] (증분은 디폴트가 1!)
-리스트 멤버 함수(=메소드)
1. .append(): 리스트의 맨 마지막에 원소를 추가함
2. .extend(): 리스트를 연장함 (리스트 두 개를 합쳐 하나의 리스트로 만들고 싶을 때), += 연산자로도 같은 동작 가능!
3. .insert(): 리스트의 원하는 위치에 원소 추가 가능 ex) .insert(인덱스, 값)
4. .remove(): 리스트의 항목 삭제 ex) .remove(값) 이 때 가장 먼저 찾아진 값 하나만을 지움!
5. .pop(): 지우고자 하는 아이템 반환(=리턴) 후 삭제
6. .index(): 찾고자 하는 값의 인덱스 반환(=리턴) ex) .index(값)
7. in 키워드: 리스트 내에 해당 값이 존재하는지 확인(리턴 타입은 boolean) ex) value in [list]
8-1. .sort(): 메소드를 호출한 리스트 객체를 내부적으로 정렬 (함수 입력값에 reverse = True로 설정하면 내림차순으로 정렬)
8-2. sorted(): 파이썬 내장 함수, 리턴 값도 리스트! ex) sorted(리스트)
09. 데이터 타입과 컬렉션 - 06. 컬렉션 타입 이해 - 3 (Tuple)
-tuple이란?
리스트와 같이 복수개의 값(데이터)을 갖는 컬렉션 타입으로, 생성된 후 변경이 불가능 (=immutable)
대부분 collection으로써 튜플은 의미가 없음 (변하지 않는 값을 트래킹 해야 할 이유가 잘 없기 때문)
하지만 튜플은 문법적인 이득이 있다 !
-튜플 언패킹(tuple unpacking)
튜플이 많이 쓰이는 곳 중 하나로, 튜플의 값을 차례대로 변수에 대입해 여러 개의 변수를 선언함과 동시에 값을 저장할 수 있다!
ex) a, b = 100, 200 → 변수 a, b가 선언되고 a에 100, b에 200이 저장됨
함수는 보통 하나의 값만을 리턴 값으로 가질 수 있지만 파이썬에서는 튜플을 이용해 multiple return이 가능 ! (엄밀히 말하면 리턴 값이 복수개가 아닌 리턴 타입이 tuple인 것)
10. 데이터 타입과 컬렉션 - 07. 컬렉션 타입 이해 - 4 (Dict)
-dictionary란?
(파이썬 코딩 시 가장 많이 쓰게될 collection이 될 것.._
키(key)와 값(value)을 갖는 데이터 구조
키는 내부적으로 hash값으로 저장! (키 값이 인덱스로 바껴서 내부적으로 저장됨)
순서를 따지지 않음 즉, 인덱스가 없음
키를 알고있다면 빠르게 딕셔너리의 value를 가져올 수가 있음!
*) 리스트: [] 튜플: () 딕셔너리: {}
*) key:value pair를 ','로 구분!
-딕셔너리 value에 접근하기
[]연산자로 접근하되, 인덱스가 아닌 키 값으로 value에 해당하는 값을 가져오는 것!
-항목 추가 및 변경
딕셔너리의 키 값은 해시(hash)에 저장되기 때문에 중복될 수 없음
따라서 기존에 존재하는 키라면, 새로운 값으로 덮어씌워짐(업데이트 혹은 수정)
존재하지 않는 키라면, 새로운 키와 그에 대응하는 값(value)을 생성
-딕셔너리 멤버 함수(=메소드)
1. .update(): 두 딕셔너리를 병합함, 겹치는 키 값이 있다면 함수의 입력 파라미타로 전달되는 키의 value로 덮어씌워진다.
2-1. .pop(): 입력값을 키로 가지는 value값을 삭제
2-2. del 키워드: 딕셔너리와 []키워드로 키 값에 해당하는 value값을 삭제
3. .clear(): 딕셔너리의 모든 값을 초기화 (빈 딕셔너리)
-in
딕셔너리에 키가 존재하는지 확인 → 리턴 타입은 boolean
리스트에서와 딕셔너리에서의 사용 방법은 크게 차이가 없으나 '성능'상의 차이가 있음!
Big-O notation으로 표현 시 O(1)만큼의 연산 → 딕셔너리의 크기(혹은 길이, length)와 관계 없음, key가 hash에 저장돼있기 때문에 검색 시간은 같음 (리스트의 경우 크기에 따라 값을 가져오는 데에 시간이 걸림 → 성능 저하 _ 비정렬 리스트(unsorted list)에서 값을 검색하기 때문)
-value 액세스
1. 딕셔너리[key값]으로 접근, 키가 없는 경우 에러 발생
2. .get()함수: 키가 없는 경우 None 반환 → 프로그램이 죽지는 않음!!
-모든 keys, values 접근
1. .keys(): 딕셔너리의 모든 키만 반환
2. .values(): 딕셔너리의 모든 값만 반환
3. .items(): 딕셔너리의 (키, 키에 대응하는 값) 의 튜플을 반환
11. 데이터 타입과 컬렉션 - 06. 컬렉션 타입 이해 - 3 (Set)
-set이란?
수학에서의 '집합'과 동일한 개념 → 중복 불가, 내부적인 순서가 없음
내부적인 순서가 없음 → 인덱싱이 안됨! ([i]연산자로 i번째 원소에 접근하는 것 불가)
-set()함수로 캐스팅
딕셔너리와 마찬가지로 대괄호{}를 사용, but 초기화는 다름!!
1. 딕셔너리 초기화: a = {}
2. 셋 초기화: a = set()
-set 연산
수학에서의 집합 연산(합집합, 교집합, 차집합 등)과 동일
1. 합집합: .union()
2. 교집합: .intersection()
3. 차집합: .difference() → 메소드 호출한 객체에서 입력 파라미타로 넘긴 객체를 뺌
4. 부분 집합: .issubset() → 메소드 호출한 객체가 입력 파라미타로 넘긴 객체의 부분 집합인가? (리턴 타입은 boolean)
강의 링크: https://bit.ly/3cB3C8y
'코딩 > 머신러닝&데이터 분석 강의' 카테고리의 다른 글
[머신러닝 인강] 3-2주차: 함수 이해 및 활용, 기본 파라미터, 키워드 파라미터 이해, 변수의 스코프 이해 (0) | 2021.03.07 |
---|---|
[머신러닝 인강] 3-1주차: 조건문과 반복문 (0) | 2021.03.02 |
[머신러닝 인강] 2-2주차: 조건문과 반복문 (0) | 2021.02.27 |
[머신러닝 인강] 1-2주차: 데이터 타입과 컬렉션 (0) | 2021.02.19 |
[머신러닝 인강] 1-1주차: 파이썬 개발환경 설정 (0) | 2021.02.16 |