본문 바로가기

공부매니아

[Edwith]모두를 위한 프로그래밍: 파이썬 자료구조




※ 학습 노트


이런 강의가 있다.


---


Data science from MIT 

 

Computer Science의 탑 1위 대학인 MIT 공대의 "Introduction to Computational Thinking and Data Science" 수업 영상 및 강의 자료를 한국어로 번역하여 여러분께 제공합니다.

해당 강좌에서는 데이터 과학이라는 분야를 시작하기 위한 알고리즘과 통계학 그리고 기계학습의 내용을 조금씩 나눠서 다루고 있으며, 프로그래밍 실습보다는 문제 해결방법 대해서 집중적으로 공부합니다. 본격적인 데이터 과학 분야에 진입하기에 앞서, 해당 분야를 배우기 위해서는 어떤 것을 더 학습해야 하는지 체험할 수 있는 강의입니다.


---


Edwith에서 수강할 예정이지만, MIT 강의라고 하니 글로벌 플랫폼에 업로드 되어있을 것 같아 찾아보았다.

>>edX와 Youtube에 있는 듯.

(Coursera에서 the most popular 과정 중 하나인 'Python for everybody(모두를 위한 파이썬)' 도 Edwith에 한글화된 버전으로 볼 수 있다.)





* 해당 분야를 배우기 위해서 어떤 것을 더 학습해야 하는지 체험할 수 있는 강의


학습해야할 새로운 영역들은 계속해서 생겨나는데, 

범위가 처음부터 정해져있지도 않거니와 계속해서 확장하고, 변화한다.

고등학교 때처럼 정해진 교과, 정해진 범위 내에서 체계적으로 공부하기가 어렵다.

(그때가 좋은 거였...다고 말하면 안되겠지..! ㅋ 그때는 그때만의 고통과 괴로움이 있었으니까-)


올해는 수행해야할 과제가 있어서 이것 저것 닥치는 대로 찾아보았다.

지금도 아주 초초초초보지만, 그래도 아주 처음보다는 들은 것, 본 것들이 생겼다.

학습 분야의 용어에 익숙해지는 것도 중요한 것 같다.


계속해서 업데이트하고 수정해야겠지만, 학습자만의 체계와 체크리스트를 만들어가는 것도 학습의 방법 중에 하나일 것 같아서,

조금씩 정리해보기로 했는데....



* 선수조건


1. 모두를 위한 프로그래밍: 파이썬

2. 모두를 위한 프로그래밍: 파이썬 자료구조

3. 모두를 위한 프로그래밍: 파이썬을 이용한 데이터베이스 처리

4. CS50 x edwith

5. Introduction to Computer Science and Programming in Python



그런데, 당황스럽게도 선수조건이 왜이렇게 많지...! ㅋㅋㅋ 해당 분야를 배우기 위해 어떤 것을 더 학습해야하는지 체험할 수 있는 강의라고 하여 아주아주 생초보자를 위한 것인줄 알았건만.!


다행히, 모두를 위한 프로그래밍을 학습한 후이긴하지만,

불행히, 이미 시간이 지나기도 했고, 학습을 기록해놓지를 않았기에, 

선수 조건인 과정부터 점검해보기로 하였다.


그런데 맙소사 ㅠ 내가 이미 들은 줄 알았던 과정도 '모두를 위한 프로그래밍: 파이썬' 만이다. 

갈길이 멀군



[모두를 위한 프로그래밍: 파이썬 자료구조] 부터 시작한다.

(Chapter 6~8)


*** 알아야할 것 : 타입 변환, 인덱싱, len 함수, for 루프


* len 함수 : 문자의 길이 >>>리스트가 몇 개의 항목을 가지고 있는지 확인 가능

* print(s[0:4]) - 4번째 인덱스는 읽지 않음!

  print(s[:2]) - 첫 번째나 마지막 인덱스 생략할 경우, 시작 또는 마지막까지 가정하고 반환

* strings는 object이고 object는 method라는 것을 가지고 있음

* replace (문자바꾸기)

* lstrip (왼쪽 공백 없애기), rstrip (오른쪽 공백 없애기), strip (양쪽 공백 없애기)

* startwith (시작 문자열 찾기)

* 파이썬3에서부터는 모든 내부 문자열이 유니코드 (한국어가 예시로 나온다!)

  유니코드 연산이어도 문자열로 인식. (파이썬3에서는 문자열이지만 유니코드 상수가 별개로 있었고 다른 자료형으로 인식함)

* open() 파일을 여는 것

\n >>> 다음 줄로

* read()

통상 프로그래밍은 알고리즘과 자료구조로 나눌 수 있음

   - 알고리즘: 특정 문제를 해결 하기 위한 규칙 또는 단계

   - 자료구조: 컴퓨터 내에서 자료를 구조화 하는 특별한 방식


* list(리스트)

  1. 리스트의 각 항목들은 '[]'로 둘러싸임
  2. 리스트 내의 항목들에 대한 구분은 ,(콤마)로 구분
  3. 리스트 내에 또 다른 리스트를 내포할 수 있음
  4. 비어 있는 리스트를 만들 수 있음
  5. 리스트의 항목들에 인덱스 값으로 접근 가능.
  6. 리스트의 항목들은 바뀔 수 있음


* range() >>> 인자로 전달되는 값에 따라서 숫자로 이루어진 리스트를 반환


* .list() >>> 리스트 만들기

* .append('book') >>리스트에 추가

* .sort() >>> 정렬

* .split() >>> 공백을 찾아 조각을 반환

  .split(';') >>> 세미콜론 기준으로 Split해주지 않으므로 별도 정의


* 컬렉션(collection)리스트나 딕셔너리 같은 변수를 가지는 상황. 하나의 정보보다는 여러 개의 정보를 저장할 때 사용

* 리스트(list): 순서대로 정렬한 컬렉션. 데이터를 추가하면 항상 리스트의 끝에 추가되고 0부터 n-1번 위치까지 순서대로 n개의 원소가 저장됨

딕셔너리(dictionary)

- 순서 없음. 대신 키(Key) 존재

-ooo={} 또는 dict()라는 생성자를 통해 생성

- {중괄호} 안에 Key:Value 형태로 저장


* get 함수 : 

counts.get(name,0)


>>>딕셔너리에 name이라는 키가 존재할 경우 값을 불러오고,

그렇지 않을 경우에는 딕셔너리의 name이라는 키에 0이라는 값을 갖는 데이터를 추가하라는 의미

if name in counts:

   x = counts[name]

else :

   x = 0 

 x = counts.get(name,0) 


* items 메소드

keys, values 메소드로는 딕셔너리의 키와 값의 쌍을 얻음 >>> items 메소드를 사용하면 됨

items 메소드를 실행하면 '튜플(tuple)'이라는 자료 구조 안에 키와 값이 쌍을 이루어 저장된 리스트가 반환됨


* Tuples(튜플) 리스트와 거의 비슷하지만 변경불가능(immutable), 즉 값 변경 (정렬, 값 추가, 순서 변경) 불가하다는 특성에서 차이가 있음

그러나 리스트보다 훨씬 효율적으로 작동함 (용량 적게 차지, 근 빠름)

* 내장된 함수 차이

l = list()

 dir(l)

# ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

  t = tuple()

 dir(t)

# ['count', 'index']


* sorted 함수 :  딕셔너리는 키 기준으로 정렬된 값이 나옴