본문 바로가기

코딩/머신러닝&데이터 분석 강의

[머신러닝 인강] 2-1주차: 데이터 타입과 컬렉션

<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

반응형